Sping Boot 应用程序.yml文件中的多个log4j附加器

5lwkijsr  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(125)

我需要在我的SpringBoot应用程序中使用2种不同的日志模式。
让我们说:

first_pattern  -- for root logger (INFO level)
second_pattern -- for packages com.stackoverflow.engine.core (DEBUG level)

这两个包都必须记录到stdout。

是否可以在application.yml中进行配置?

(not在XML或属性文件中,但在YML中)
非常感谢!

vddsk6oq

vddsk6oq1#

不,您不能单独使用Spring配置来获得这样的配置。Sping Boot 只支持所有日志框架通用的两个配置选项(参见文档)。
如果您想要更复杂的配置,则需要使用您正在使用的特定日志框架的本机配置格式。
如果您使用的是Log4j 2.x,则可以扩展default Spring configuration并将其另存为类路径中的log4j2-spring.yml

Configuration:
  packages: org.springframework.boot.logging.log4j2
  properties:
    property:
      - name: LOG_EXCEPTION_CONVERSION_WORD
        value: "%xwEx"
      - name: LOG_LEVEL_PATTERN
        value: "%5p"
      - name: LOG_DATEFORMAT_PATTERN
        value: "yyyy-MM-dd HH:mm:ss.SSS"
      - name: CONSOLE_LOG_PATTERN
        value: "%clr{%d{${sys:LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${sys:LOG_LEVEL_PATTERN}} %clr{%pid}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}"
      - name: FILE_LOG_PATTERN
        value: "%d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} %pid --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}"

  appenders:
    appender:
      - name: Console
        type: Console
        PatternLayout:
          pattern: "${sys:CONSOLE_LOG_PATTERN}"
      - name: Console2
        type: Console
        PatternLayout:
          pattern: "Pattern2 %d %p %c{1.} [%t] %m%n"

  loggers:
    logger:
      - name: com.stackoverflow.engine.core
        level: DEBUG
        additivity: false
        AppenderRef:
          - ref: Console2
    root:
      level: INFO
      AppenderRef:
        - ref: Console

备注:要使用YAML格式,您需要将jackson-datatype-yaml添加到依赖项中。如果您使用Maven,请添加:

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-yaml</artifactId>
    <!-- version managed by Spring Boot -->
</dependency>
oaxa6hgo

oaxa6hgo2#

spring属性logging.config在您的情况下可能非常有用。通过使用这个属性,您可以很容易地根据概要文件或环境提供不同的配置。
您仍然需要使用Piotr P. Karwasz已经说过的log4j2配置文件来定义模式,但是您可以轻松地在不同的设置之间切换。

相关问题