我能够使用log4j2创建两个日志,并且能够将日志写入单个日志文件。如何将日志写入两个不同的记录器?
我将log4j2.xml文件修改为有两个记录器。
任何示例示例?
答案 0 :(得分:1)
您可能希望配置多个appender,而不是配置多个记录器。例如:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
<Appenders>
<File name="MyFile" fileName="logs/app.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
<File name="Other" fileName="logs/other.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="MyFile" level="trace"/>
<AppenderRef ref="Other" level="debug"/>
</Root>
</Loggers>
</Configuration>
答案 1 :(得分:1)
第1点
我猜您要求将一个日志写入不同的目的地,例如。不同的文件。正如Remko所提到的,您可以配置不同的appender来处理每个日志文件。
由于我没有足够的声誉评论Remko的回答,这里有一些我的其他例子:
如果您使用DEBUG级别作为日志,请调用logger.debug("your message")
并配置您的log4j2.xml,如下所示,您将看到&#34;您的消息&#34;登录file1.log和file2.log。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<File name="File1" fileName="logs/file1.log">
<PatternLayout>
<Pattern>"Add your pattern here"</Pattern>
</PatternLayout>
</File>
<File name="File2" fileName="logs/file2.log">
<PatternLayout>
<Pattern>"Add your pattern here"</Pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<Root level="debug">
<!--This will write the same log into both of the files -->
<AppenderRef ref="File1" level="debug"/>
<AppenderRef ref="File2" level="debug"/>
</Root>
</Loggers>
</Configuration>
第2点
我们应该注意到,在Remko的例子中,所有日志进入其他日志也会被写入MyFile。有关解释,请参阅Log4j2 Documentation,示例6中的更多内容。简而言之,由于TRACE是一个低于DEBUG的杠杆,所有具有DEBUG级别的日志都可以在TRACE中传递并记录。
第3点
写入不同目的地的另一种可能性是通过Appender Additivity。
将转发给定记录器的每个已启用的日志记录请求 Logger的LoggerConfig中的所有投放者以及 LoggerConfig的父母的投降。