如何使用YAML为Logback/Springboot配置多个日志文件?
问题描述:
我正在重写一个小的DropWizard应用程序以在SpringBoot上运行。如何使用YAML为Logback/Springboot配置多个日志文件?
我的DW应用程序有以下日志记录配置其工作原理:
logging:
level: INFO
appenders:
- type: file
currentLogFilename: /var/log/paas/console.log
archivedLogFilenamePattern: /var/log/paas/console.log-%d.gz
archivedFileCount: 7
loggers:
com.myorg:
level: DEBUG
appenders:
- type: file
currentLogFilename: /var/log/paas/paas.log
archivedLogFilenamePattern: /var/log/paas/paas.log-%d.gz
archivedFileCount: 7
这个配置我的应用程序和控制台消息分隔成两个独立的日志。
当我尝试使用与SpringBoot相同的配置时,它没有任何作用。我能写的一切到一个日志以下面的配置,但我真的需要有两个独立的日志:
logging:
level:
org.springframework.web: INFO
com.myorg: DEBUG
file: /var/log/paas/paas.log
是没可能的logback使用YAML和做到这一点?还是有一种替代语法,可以给我与我的DropWizard应用程序相同的结果?
答
Spring Boot的Logback的YAML配置只允许单个文件appender。为了配置Logback使用多个文件appender,你必须提供一个明确的logback.xml
或logback-spring.xml
。如果您从application.yaml
文件中删除日志记录confoguraiotn,然后将logback.xml
或logback-spring.xml
添加到运行时类路径的根目录中,则将从该文件配置Logback。
下面是一个例子,使用logback.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- deny all events with a level below INFO, that is TRACE and DEBUG -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<file>/var/log/paas/console.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/paas/console.log-%d.gz</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder>
<pattern>...</pattern>
</encoder>
</appender>
<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/paas/paas.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/paas/paas.log-%d.gz</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder>
<pattern>...</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="INFO_FILE"/>
<appender-ref ref="DEBUG_FILE"/>
</root>
</configuration>
我有同样的需要,你弄清楚如何得到它? –