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中进行配置。 后面有时间再研究下是个什么原因。

posted @   blacksonny  阅读(6514)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 我与微信审核的“相爱相杀”看个人小程序副业
· DeepSeek “源神”启动!「GitHub 热点速览」
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
历史上的今天:
2016-01-09 double精度的坑与BigDecimal
点击右上角即可分享
微信分享提示