如何从Log4j Logger / Appender中排除单个类?

时间:2011-03-11 07:15:48

标签: java logging log4j appender

我有一个包“com.example”。这个包有五个类。我想将其中四个类记录到一个文件中,但排除第五个类。

我可以写四个记录器,例如logger name =“com.example.Class1”,并将相同的appender添加到所有四个记录器。有没有更简单的方法(让我们认为我有100个而不是5个班级?)

还有其他一些像这样的问题。但其他人只想排除一个类来记录这个类。这可以使用addivity标志来解决。但我认为可加性标志在这里不起作用,因为我不想记录第五类,而是所有其他类?!

希望有人可以帮助我吗?

2 个答案:

答案 0 :(得分:29)

只需将第五个类配置为使用日志级别OFF:

log4j.logger.com.example=INFO, MyAppender
log4j.logger.com.example.FifthClass=OFF

实际上我建议您不要将其设置为OFF,而是设置为FATAL。 <{1}}甚至是ERROR

想要忽略来自某些类的日志记录的主要原因通常是它记录太多(超过有用并且难以读取日志)。但是,大多数时候你仍然想知道某些事情是否真的真的错误。通过将其设置为WARN,您仍然可以看到真正有问题的案例,但不会被大量ERROR日志语句所困扰。

答案 1 :(得分:13)

(仅为了完整答案)

您也可以尝试通过设置log4j.xml文件来实现。只需记录整个包,然后以不同的方式记录FifthClass。

<logger name="com.example">
    <level value="INFO"/>
</logger>

<logger name="com.example.FifthClass">
    <level value="FATAL"/>
</logger>