【发布时间】:2015-04-25 15:56:47
【问题描述】:
我能够使用 log4j2 创建两个日志,并且能够将日志写入单个日志文件。如何将日志写入两个不同的记录器?
我将 log4j2.xml 文件修改为有两个记录器。
有示例吗?
【问题讨论】:
-
如果下面回答了你的问题,你能关闭这个吗?
标签: java logging configuration log4j log4j2
我能够使用 log4j2 创建两个日志,并且能够将日志写入单个日志文件。如何将日志写入两个不同的记录器?
我将 log4j2.xml 文件修改为有两个记录器。
有示例吗?
【问题讨论】:
标签: java logging configuration log4j log4j2
您可能想要配置多个附加程序,而不是配置多个记录器。示例:
<?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 点
我猜你是要求将一个日志写入不同的目的地,例如。不同的文件。正如 Remko 所提到的,您可以配置不同的附加程序来处理每个日志文件。
由于我没有足够的声誉来评论 Remko 的回答,这里是我的一些额外示例:
如果您对日志使用 DEBUG 级别,调用 logger.debug("your message") 并如下配置您的 log4j2.xml,您将在 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 的示例中,所有进入 Other 的日志也将写入 MyFile。在Log4j2 Documentation 中查看更多信息,示例 6 进行解释。简而言之,由于 TRACE 比 DEBUG 级别低,所有具有 DEBUG 级别的日志都可以在 TRACE 中传递并记录。
第 3 点
写入不同目的地的另一种可能性是通过 Appender Additivity。
给定记录器的每个启用的记录请求都将被转发到 该 Logger 的 LoggerConfig 中的所有 apprender 以及 LoggerConfig 父级的 Apprenders。
【讨论】: