在項目中使用了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中進行配置。 後面有時間再研究下是個什麼緣由。優化