【问题标题】:How to use log4j2 with spring boot actuators如何将 log4j2 与 spring boot 执行器一起使用
【发布时间】:2019-11-14 00:05:33
【问题描述】:

我正在尝试将 log4j2 中的日志提供给 Spring boot 执行器。不幸的是,我只实现了如何更改 ROOT 记录器的日志级别。也许有人知道如何将执行器与 log4j2 连接?

【问题讨论】:

    标签: spring-boot log4j2 spring-boot-actuator


    【解决方案1】:

    我以另一种方式找到了解决方案。无论您如何配置 log4j2,因为 /logging 执行器中的 spring boot admin 读取日志文件。因此,我必须写入该文件的路径。

    只有当你有 logback 时才有效,spring 写入路径中的文件

    application.yml

    ...
    logging:
      path: ./path/to/file
    ...
    

    终于我找到了log4j2的解决方案:

    application.yml

    ...
    endpoints:
      logfile:
        external-file: logs/custom.log
    ...
    

    只有在你去掉日志记录的情况下才有效。* 属性

    在这个answer找到它

    【讨论】:

      【解决方案2】:

      这个link 可能会有所帮助。

      一个简单的 log4j2 配置如下所示:

      <?xml version="1.0" encoding="UTF-8"?>
      
      <Configuration>
      <Appenders>
          <Console name="Console" target="SYSTEM_OUT">
              <PatternLayout
                  pattern="%style{%d{ISO8601}}{black} %highlight{%-5level }[%style{%t}{bright,blue}] %style{%C{1.}}{bright,yellow}: %msg%n%throwable" />
          </Console>
      
          <RollingFile name="RollingFile"
              fileName="./logs/spring-boot-logger-log4j2.log"
              filePattern="./logs/$${date:yyyy-MM}/spring-boot-logger-log4j2-%d{-dd-MMMM-yyyy}-%i.log.gz">
              <PatternLayout>
                  <pattern>%d %p %C{1.} [%t] %m%n</pattern>
              </PatternLayout>
              <Policies>
                  <!-- rollover on startup, daily and when the file reaches 10 MegaBytes-->
                  <OnStartupTriggeringPolicy />
                  <SizeBasedTriggeringPolicy size="10 MB" />
                  <TimeBasedTriggeringPolicy />
              </Policies>
          </RollingFile>
      </Appenders>
      
      <Loggers>
          <!-- LOG everything at INFO level -->
          <Root level="info">
              <AppenderRef ref="Console" />
              <AppenderRef ref="RollingFile" />
          </Root>
      
          <!-- LOG "com.example*" at TRACE level -->
          <Logger name="com.example" level="trace"></Logger>
      </Loggers>
      
      </Configuration>
      

      如果您使用这样的文件,则只有在 -tag 中定义的 Logger 将显示在执行器端点。因此,如果您想查看更多 Logger,则必须将它们添加到此文件中。

      【讨论】:

      • 这是正确的答案,但不足以让我达到预期的结果。看看我下面的回答。结合您的解决方案,这可以全面解决问题。
      猜你喜欢
      • 2016-10-31
      • 2019-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      • 2021-08-10
      • 2020-11-02
      • 2017-08-31
      相关资源
      最近更新 更多