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

时间:2010-01-24 06:28:59

标签: java logging log4j

在我的log4j.xml中,我有

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

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

2 个答案:

答案 0 :(得分:2)

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

有关详细信息,this page有一节介绍如何在XML配置文件中配置过滤器,Filter javadoc列出了可用(标准)过滤器类。例如,您可以根据日志记录事件的消息是否与给定字符串匹配来进行过滤。

话虽如此,过滤方法会很麻烦,特别是如果有很多不同的消息需要过滤/过滤。

答案 1 :(得分:0)

您可以为每个类或包使用单独的记录器,但这取决于这些类在那里创建的记录器。

尽管如此,您最好专注于供应商对这些类的实现,而不是专注于接口。