Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从Log4j记录器/追加器中排除单个类?_Java_Logging_Log4j_Appender - Fatal编程技术网

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

Java 如何从Log4j记录器/追加器中排除单个类?,java,logging,log4j,appender,Java,Logging,Log4j,Appender,我有一个包“com.example”。这个包有五个类。我想将其中四个类记录到一个文件中,但不包括第五个类 我可以编写四个记录器,例如logger name=“com.example.Class1”,并向所有四个记录器添加相同的appender。有没有更简单的方法(让我们假设我有100节而不是5节课) 还有一些像这样的问题。但是其他人只是想排除一个类来记录这个类。这可以使用加法标志来解决。但我认为加法标志在这里不起作用,因为我不想记录第五个类,而是所有其他类 希望有人能帮助我?只需将第五个类配置为

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

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

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


希望有人能帮助我?

只需将第五个类配置为使用“注销”即可:

log4j.logger.com.example=INFO, MyAppender
log4j.logger.com.example.FifthClass=OFF
实际上,我建议您不要将其设置为
关闭
,而是设置为
致命
<代码>错误甚至
警告

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

(只是为了完整的答案)

您也可以通过设置log4j.xml文件来尝试这样做。只需根据需要记录整个包,并以不同方式记录第五个类

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

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


为什么不创建一个带有文件附加器的记录器,并且只让那些类使用它呢?嗯。。这只是一个建议,所以请评论一下。这里有Filter()机制。可能这就是100个类所需要的)哦,我知道有一个简单的方法:-)有关于log4j的xml配置的好文档吗?这是我第一次不通过属性使用配置。我还不喜欢XML方法(太多的样板代码)…我发现它包含了最有用的文档。这也适用于子类。因此,如果FifthClass位于包'com.example.numberedclasses'中,则可以通过将该包的日志记录设置为致命来排除该包的所有成员。