如何使用log4j禁用类的调试日志记录?

问题描述:

在我的log4j.xml,我有如何使用log4j禁用类的调试日志记录?

<logger name="java.sql"> 
    <level value="DEBUG" /> 
</logger> 

但是使用这个,它还可以对接口Resultset记录。如果我想禁用此接口的日志记录,但仍想要调试日志记录statementpreparedstatement等...我该怎么做?

您可以为每个类或包使用单独的记录器,但它取决于如何创建那些类自己的记录器。

虽然,您最好专注于供应商的这些类的实现,而不是侧重于接口。

Log4j不允许您​​根据类别或包名称本身控制日志记录。相反,使用log4j(以及类似的Java记录器)进行记录控制的粒度由应用程序使用的记录器名称决定。如果您的JDBC驱动程序对语句,预处理语句,结果集等有不同的记录器,那就没问题。但是,如果它使用单个记录器记录所有日志,则需要进行某种过滤。

有关更多信息,this page有关于在XML配置文件中配置过滤器的部分,并且javadoc列出了可用(标准)过滤器类。例如,您可以根据日志记录事件的消息是否与给定字符串匹配进行筛选。尽管如此,过滤方法会很麻烦,尤其是如果有很多不同的消息要过滤/过滤。