Java 在 log4j.xml 中使用 RollingFileAppender 创建两个日志文件
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/20546392/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
create two log files using RollingFileAppender in log4j.xml
提问by Human Being
My log4j.xml
configuration was like ,
我的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>
And two log files also created in the specified location.
并且还在指定位置创建了两个日志文件。
I need to know how to log two different data's in these two different log_files independently in JAVA
class.
我需要知道如何在JAVA
课堂上独立地在这两个不同的 log_files 中记录两个不同的数据。
For example,
例如,
Logger logOne = Logger.getLogger("com.comp.logger1");
Logger logTwo = Logger.getLogger("com.comp.logger2");
The above code is not working for me. All the log informations are logged to both the created two log files. I need the separation of logging data.
上面的代码对我不起作用。所有日志信息都记录到创建的两个日志文件中。我需要分离日志数据。
My need is,
我的需要是,
I want to create two log file. Because my project has two modules and log each module in separate log files.
After that , I have to log each module logging data independently .
Please make sure I used the logger name for logging in my java class correctly.
我想创建两个日志文件。因为我的项目有两个模块并将每个模块记录在单独的日志文件中。
之后,我必须独立记录每个模块的日志数据。
请确保我正确使用了记录器名称来登录我的 java 类。
Any new or complete examples using log4j.xml are greatly appreciated.
非常感谢任何使用 log4j.xml 的新示例或完整示例。
EDIT :
编辑 :
If I add the additivity="false"in the logger as,
如果我在记录器中添加 additivity="false"作为,
<logger name="com.comp.logger1" additivity="false">
<appender ref="fileAppender1" />
</logger>
<logger name="com.comp.logger2" additivity="false">
<appender ref="fileAppender2" />
</logger>
The log data didn't logged in the created log file.The log file was empty.
日志数据未记录在创建的日志文件中。日志文件为空。
Please make sure my <root>...</root>
is correct.
请确保我<root>...</root>
是正确的。
采纳答案by stripybadger
You problem is with the <root>
section, the root section captures all logs, and you've told it to log to both appenders...
您的问题出在该<root>
部分,根部分捕获所有日志,并且您已告诉它记录到两个附加程序...
You could remove it, or set additivity="false"
on each of your logger
elements - this will tell log4j not to log the same log through 'root' if it's already been logged through one of your 'logger's.
您可以删除它,或additivity="false"
在您的每个logger
元素上设置 - 如果它已经通过您的“记录器”之一记录,这将告诉 log4j 不要通过“root”记录相同的日志。
Edit:you don't say which version of log4j you are using, but I'm using log4j-1.2.16, and using the file in your post, it fails completely for me because it doesn't like the <appender ref="fileAppender1"/>
, it wants them to be <appender-ref ref="fileAppender1"/>
(note the -ref
after the appender). If I add these in, and also add the additivity attributes that I suggested, then for me it works as you expect.
编辑:你没有说你使用的是哪个版本的 log4j,但我使用的是log4j-1.2.16,并且使用你帖子中的文件,它对我来说完全失败,因为它不喜欢<appender ref="fileAppender1"/>
,它想要它们是<appender-ref ref="fileAppender1"/>
(注意-ref
在appender之后)。如果我添加这些,并添加我建议的可加性属性,那么对我来说它会按您的预期工作。