slf4j結合log4j使用

怎樣在maven項目中引入slf4j

  1. 在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>

  1. 在類路徑下建立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>



  1. 代碼中的使用
//應用日誌類
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的數據

參考:spring-mybatis項目中打印完整sql不帶佔位符

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章