log4jdbc 與 logback 集合打印日誌過多的解決

在項目中使用了log4jdbc,能夠很方便的把sql的參數也打印出來,便於問題調試。好比原始sql: select * from t_order where order_id = ? ; 通過log4jdbc的處理後就變成了 select * from t_order where order_id = 123。 可是通過這個處理之後,默認會打印sql相關的不少信息,好比鏈接、執行時間、參數綁定、結果等信息, 會使日誌打印迅速膨脹,我這裏服務調用比較頻繁,有兩個定時任務在調用服務,日誌天天在50G左右。因而在 log4jdbc.properties 進行了相關配置,可是沒有什麼效果。 後來在logback.xml 增長了以下配置:sql

    <logger name="jdbc.sqlonly" level="ERROR">
        <appender-ref ref="rollingFile"/>
    </logger>
    <logger name="jdbc.audit" level="ERROR">
        <appender-ref ref="rollingFile"/>
    </logger>
    <logger name="jdbc.resultset" level="ERROR">
        <appender-ref ref="rollingFile"/>
    </logger>
    <logger name="jdbc.connection" level="ERROR">
        <appender-ref ref="rollingFile"/>
    </logger>

將jdbc.only, jdbc.audit, jdbc.resultset, jdbc.connection 的打印級別設置爲ERROR, 減小了這部分的打印,你們可根據本身的需求進行配置級別。通過優化後天天在1G之內。apache

附log4jdbc.properties的配置以下:app

log4j.logger.jdbc.sqlonly=DEBUG,console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n%n
log4j.logger.jdbc.sqltiming=DEBUG,console
log4j.logger.jdbc.connection=DEBUG,console

曾嘗試在以上文件中修改DEBUG爲ERROR、OFF 都無效。 猜測是由於logback接管了log的輸出配置,因此必須在logback中進行配置。 後面有時間再研究下是個什麼緣由。優化

相關文章
相關標籤/搜索