如何在文件 logback spring 引导中排除错误日志级别
How to exclude error log level in a file logback spring boot
我有一个 spring 启动应用程序(spring-boot-starter-parent --> 2.3.0.RELEASE),我正在执行日志。
基本上我想要实现的是我有 2 个日志文件,一个 bridgeError.log 只包含错误消息,另一个 bridge.log 包含所有日志级别 除了 错误级别 因为它正在记录在 brideError.log 文件中。
我可以创建 2 个日志文件 brideError.log,其中仅包含错误消息,但问题是
bridge.log 还包含错误消息。
请在下面找到我的 logback-spring.xml 配置:
<configuration>
<property name="HOME_LOG" value="logs/bridge.log"/>
<property name="HOME_LOG_ERROR" value="logs/bridgeError.log"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE-ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${HOME_LOG}</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>logs/archived/bridge.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<!-- each archived file, size max 10MB -->
<maxFileSize>10MB</maxFileSize>
<!-- total size of all archive files, if total size > 20GB, it will delete old archived file -->
<totalSizeCap>20GB</totalSizeCap>
<!-- 60 days to keep -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</encoder>
</appender>
<appender name="FILE-ROLLING-ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${HOME_LOG_ERROR}</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>logs/archived/bridgeError.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<!-- each archived file, size max 10MB -->
<maxFileSize>10MB</maxFileSize>
<!-- total size of all archive files, if total size > 20GB, it will delete old archived file -->
<totalSizeCap>20GB</totalSizeCap>
<!-- 60 days to keep -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</encoder>
</appender>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<logger name="com.dummy.package" level="debug" additivity="false">
<!-- <appender-ref ref="FILE-ROLLING"/>-->
<appender-ref ref="CONSOLE"/>
</logger>
<!-- <root level="error">
<appender-ref ref="FILE-ROLLING"/>
<!– <appender-ref ref="CONSOLE"/>–>
</root>-->
<logger name="com.dummy.package" level="DEBUG">
<appender-ref ref="FILE-ROLLING"/>
<appender-ref ref="FILE-ROLLING-ERROR"/>
</logger>
</configuration>
是否可以排除 bridge.log 文件中的错误信息?
提前致谢
您可以为此目的使用级别过滤器
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
我有一个 spring 启动应用程序(spring-boot-starter-parent --> 2.3.0.RELEASE),我正在执行日志。
基本上我想要实现的是我有 2 个日志文件,一个 bridgeError.log 只包含错误消息,另一个 bridge.log 包含所有日志级别 除了 错误级别 因为它正在记录在 brideError.log 文件中。
我可以创建 2 个日志文件 brideError.log,其中仅包含错误消息,但问题是 bridge.log 还包含错误消息。
请在下面找到我的 logback-spring.xml 配置:
<configuration>
<property name="HOME_LOG" value="logs/bridge.log"/>
<property name="HOME_LOG_ERROR" value="logs/bridgeError.log"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE-ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${HOME_LOG}</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>logs/archived/bridge.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<!-- each archived file, size max 10MB -->
<maxFileSize>10MB</maxFileSize>
<!-- total size of all archive files, if total size > 20GB, it will delete old archived file -->
<totalSizeCap>20GB</totalSizeCap>
<!-- 60 days to keep -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</encoder>
</appender>
<appender name="FILE-ROLLING-ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${HOME_LOG_ERROR}</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>logs/archived/bridgeError.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<!-- each archived file, size max 10MB -->
<maxFileSize>10MB</maxFileSize>
<!-- total size of all archive files, if total size > 20GB, it will delete old archived file -->
<totalSizeCap>20GB</totalSizeCap>
<!-- 60 days to keep -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</encoder>
</appender>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<logger name="com.dummy.package" level="debug" additivity="false">
<!-- <appender-ref ref="FILE-ROLLING"/>-->
<appender-ref ref="CONSOLE"/>
</logger>
<!-- <root level="error">
<appender-ref ref="FILE-ROLLING"/>
<!– <appender-ref ref="CONSOLE"/>–>
</root>-->
<logger name="com.dummy.package" level="DEBUG">
<appender-ref ref="FILE-ROLLING"/>
<appender-ref ref="FILE-ROLLING-ERROR"/>
</logger>
</configuration>
是否可以排除 bridge.log 文件中的错误信息?
提前致谢
您可以为此目的使用级别过滤器
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>