怎樣在maven項目中引入slf4j
- 在pom文件中引入需要的jar包
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<!--Jakarta Commons Logging日誌橋接工具-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.25</version>
<scope>runtime</scope>
</dependency>
<!--Jakarta Commons Logging日誌橋接工具 bridge to slf4j-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.21</version>
</dependency>
<!--綁定log4j-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
<!--具體實現類-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
- 在類路徑下建立log4j.xml,如下給出一個示例
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
<!--若干個appender的定義-->
<!--org.apache.log4j.ConsoleAppender 輸出到控制檯-->
<appender name="ConsoleOutput" class="org.apache.log4j.ConsoleAppender">
<!--輸出格式-->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n"/>
</layout>
</appender>
<!--org.apache.log4j.DailyRollingFileAppender 每天產生一個日誌文件-->
<appender name="myFile" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="E:\\IdeaProjects\\complat\\target\\complat\\output.log"/><!--文件位置-->
<param name="Append" value="true"/><!--是否選擇追加-->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n"/>
</layout>
</appender>
<!--org.apache.log4j.RollingFileAppender 滾動日誌文件輸出 文件大小到達一定尺寸時重新產生新的文件-->
<!--<appender name="myFile" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="D:/output.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
</layout>
</appender>-->
<!--將各個包中的類日誌輸出到不同的日誌文件中
這樣可以便於日誌的分類。
可以通過這個設置,把業務邏輯的日誌添加到數據庫。起到過濾的作用
-->
<!-- 由log4jdbc配置輸出具體的sql信息
jdbc.sqlonly : 記錄系統執行過的sql語句
jdbc.sqltiming : 記錄sql執行的時間,可以分析耗時的sql語句
jdbc.audit : 記錄除了ResultSet外的所有JDBC調用情況。一般不需要。
jdbc.resultset : 記錄返回結果集信息
jdbc.connection: 記錄數據庫連接和釋放信息,可記錄當前的數據庫連接數,便於診斷連接是否釋放。
-->
<logger name="jdbc.sqlonly" additivity="true">
<level value="INFO"/>
</logger>
<logger name="jdbc.sqltiming" additivity="true">
<level value="ERROR"/>
</logger>
<logger name="jdbc.resultsettable" additivity="true">
<level value="ERROR"/>
</logger>
<logger name="jdbc.resultset" additivity="true">
<level value="ERROR"/>
</logger>
<logger name="jdbc.connection" additivity="true">
<level value="ERROR"/>
</logger>
<logger name="jdbc.audit" additivity="true">
<level value="WARN"/>
</logger>
<!-- 根logger的設置-->
<root>
<!--優先級設置,假設設置爲“info”,則無法輸出debug級別的日誌-->
<priority value="error"/>
<appender-ref ref="ConsoleOutput"/>
<appender-ref ref="myFile"/>
</root>
</log4j:configuration>
- 代碼中的使用
//應用日誌類
protected final Logger log = LoggerFactory.getLogger(this.getClass());
//佔位符輸出debug級別的信息
log.debug("username is:{} and password is:{}",user.getUserName(),user.getPassword());
小常識:
tdiwef:日誌級別
log.trace(“Trace Message!”);
log.debug(“Debug Message!”);
log.info(“Info Message!”);
log.warn(“Warn Message!”);
log.error(“Error Message!”);
log.fatal(“Fatal Message!”);
若是warn ,則輸出 wef級別的數據;
若是info,則不能輸出debug級別和trace的數據