我的log4j.xml
配置就像,
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
<appender name="fileAppender1" class="org.apache.log4j.RollingFileAppender">
<param name="Threshold" value="ALL" />
<param name="MaxFileSize" value="3KB" />
<param name="MaxBackupIndex" value="10" />
<param name="File" value="F:/logs/Testing/Project_moduleOne.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{MMM-dd-yyyy HH:mm:ss:SSS} %-5p %m%n" />
</layout>
</appender>
<appender name="fileAppender2" class="org.apache.log4j.RollingFileAppender">
<param name="Threshold" value="ALL" />
<param name="MaxFileSize" value="3KB" />
<param name="MaxBackupIndex" value="10" />
<param name="File" value="F:/logs/PAD_Testing/Project_moduleTwo.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{MMM-dd-yyyy HH:mm:ss:SSS} %-5p %m%n" />
</layout>
</appender>
<!--sets the priority log level for org.springframework -->
<logger name="com.comp.logger1">
<appender ref="fileAppender1"/>
</logger>
<logger name="com.comp.logger2">
<appender ref="fileAppender2" />
</logger>
<!--sets the default priority log level -->
<root>
<priority value="all"></priority>
<appender-ref ref="fileAppender1" />
<appender-ref ref="fileAppender2" />
</root>
</log4j:configuration>
还在指定位置创建了两个日志文件。
我需要知道如何在JAVA
类中独立记录这两个不同log_files中的两个不同数据。
例如,
Logger logOne = Logger.getLogger("com.comp.logger1");
Logger logTwo = Logger.getLogger("com.comp.logger2");
以上代码对我不起作用。所有日志信息都记录到创建的两个日志文件中。我需要分离记录数据。
我需要,
我想创建两个日志文件。因为我的项目有两个模块,并将每个模块记录在不同的日志文件中。
之后,我必须独立记录每个模块记录数据。
请确保我使用记录器名称正确登录我的java类。
非常感谢使用log4j.xml的任何新的或完整的示例。
编辑:
如果我在记录器中添加 additivity =“false”,
<logger name="com.comp.logger1" additivity="false">
<appender ref="fileAppender1" />
</logger>
<logger name="com.comp.logger2" additivity="false">
<appender ref="fileAppender2" />
</logger>
日志数据未记录在创建的日志文件中。日志文件为空。
请确保我的<root>...</root>
正确无误。
答案 0 :(得分:2)
问题在于<root>
部分,根部分捕获所有日志,并且您已告诉它记录到两个appender ......
您可以删除它,或在每个additivity="false"
元素上设置logger
- 这会告诉log4j不要记录相同的日志通过&#39; root&#39;如果它已经通过您的某个记录器进行了记录。
编辑:您不知道您使用的是哪个版本的log4j,但我使用 log4j-1.2.16 ,并使用文件在你的帖子中,它完全失败了,因为它不像<appender ref="fileAppender1"/>
,它希望它们是<appender-ref ref="fileAppender1"/>
(请注意appender之后的-ref
)。如果我添加这些,并添加我建议的additivity属性,那么对我来说它可以按预期工作。