如何从Log4j记录器/追加器中排除单个类?

2022-09-01 06:02:40

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

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

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

希望有人能帮助我?


答案 1

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

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

实际上,我建议您不要将其设置为 ,而是设置为 。 甚至相反。OFFFATALERRORWARN

想要忽略来自某个类的日志记录的主要原因通常是如果它记录了很多(超过有用并且难以读取日志)。但是,大多数时候,您仍然想知道是否真的出了问题。通过将其设置为,您仍然可以看到真正的问题案例,但不会因大量日志语句而烦恼。ERRORINFO


答案 2

(只是为了完整答案)

您也可以尝试通过设置log4j.xml文件来执行此操作。只需根据需要记录整个软件包,并以不同的方式记录FifthClass。

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

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

推荐