我需要在我的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中)非常感谢!
vddsk6oq1#
不,您不能单独使用Spring配置来获得这样的配置。Sping Boot 只支持所有日志框架通用的两个配置选项(参见文档)。如果您想要更复杂的配置,则需要使用您正在使用的特定日志框架的本机配置格式。如果您使用的是Log4j 2.x,则可以扩展default Spring configuration并将其另存为类路径中的log4j2-spring.yml:
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,请添加:
jackson-datatype-yaml
<dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-yaml</artifactId> <!-- version managed by Spring Boot --> </dependency>
oaxa6hgo2#
spring属性logging.config在您的情况下可能非常有用。通过使用这个属性,您可以很容易地根据概要文件或环境提供不同的配置。您仍然需要使用Piotr P. Karwasz已经说过的log4j2配置文件来定义模式,但是您可以轻松地在不同的设置之间切换。
2条答案
按热度按时间vddsk6oq1#
不,您不能单独使用Spring配置来获得这样的配置。Sping Boot 只支持所有日志框架通用的两个配置选项(参见文档)。
如果您想要更复杂的配置,则需要使用您正在使用的特定日志框架的本机配置格式。
如果您使用的是Log4j 2.x,则可以扩展default Spring configuration并将其另存为类路径中的
log4j2-spring.yml
:备注:要使用YAML格式,您需要将
jackson-datatype-yaml
添加到依赖项中。如果您使用Maven,请添加:oaxa6hgo2#
spring属性logging.config在您的情况下可能非常有用。通过使用这个属性,您可以很容易地根据概要文件或环境提供不同的配置。
您仍然需要使用Piotr P. Karwasz已经说过的log4j2配置文件来定义模式,但是您可以轻松地在不同的设置之间切换。