【问题标题】:How to write logs to two different loggers?如何将日志写入两个不同的记录器?
【发布时间】:2015-04-25 15:56:47
【问题描述】:

我能够使用 log4j2 创建两个日志,并且能够将日志写入单个日志文件。如何将日志写入两个不同的记录器?

我将 log4j2.xml 文件修改为有两个记录器。

有示例吗?

【问题讨论】:

  • 如果下面回答了你的问题,你能关闭这个吗?

标签: java logging configuration log4j log4j2


【解决方案1】:

您可能想要配置多个附加程序,而不是配置多个记录器。示例:

<?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>

【讨论】:

    【解决方案2】:

    第 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。

    【讨论】:

      猜你喜欢
      • 2014-12-24
      • 1970-01-01
      • 2019-11-21
      • 2015-12-29
      • 2020-01-03
      • 2014-02-06
      • 2022-07-06
      • 1970-01-01
      相关资源
      最近更新 更多