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 增加了如下配置:

    <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以內。

附log4jdbc.properties的配置如下:

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中進行配置。 后面有時間再研究下是個什么原因。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM