java - logback 无法登录调试
问题描述
我的 logback 配置有点问题,我的应用程序的所有 --> log.debug("one log") 都没有写入我的 debug.log 文件......你知道为什么吗?在我的 logback 配置文件下面:
<?xml version="1.0" encoding="UTF-8"?>
<property name="LOG_PATH" value="/home/log/company"/>
<appender name="trafic" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/trafic.log</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}]|%-5level|%thread|%logger.%method%cyan(\(%line\)): --- %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<maxHistory>30</maxHistory>
<totalSizeCap>50MB</totalSizeCap>
<cleanHistoryOnStart>false</cleanHistoryOnStart>
<fileNamePattern>${LOG_PATH}/trafic/year=%d{yyyy, aux}/month=%d{MM, aux}/day=%d{dd,
aux}/trafic.%d{yyyy-MM-dd}.log
</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/debug.log</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}]|%-5level|%thread|%logger.%method%cyan(\(%line\)): --- %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<maxHistory>30</maxHistory>
<totalSizeCap>50MB</totalSizeCap>
<cleanHistoryOnStart>false</cleanHistoryOnStart>
<fileNamePattern>${LOG_PATH}/debug/year=%d{yyyy, aux}/month=%d{MM, aux}/day=%d{dd,
aux}/debug.%d{yyyy-MM-dd}.log
</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/error.log</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}]|%-5level|%thread|%logger.%method%cyan(\(%line\)): --- %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<maxHistory>30</maxHistory>
<totalSizeCap>50MB</totalSizeCap>
<cleanHistoryOnStart>false</cleanHistoryOnStart>
<fileNamePattern>${LOG_PATH}/error/year=%d{yyyy, aux}/month=%d{MM, aux}/day=%d{dd,
aux}/error.%d{yyyy-MM-dd}.log
</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="access" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/access.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}]|%-5level|%thread|%logger.%method%cyan(\(%line\)): --- %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<maxHistory>30</maxHistory>
<totalSizeCap>50MB</totalSizeCap>
<cleanHistoryOnStart>false</cleanHistoryOnStart>
<fileNamePattern>${LOG_PATH}/access/year=%d{yyyy, aux}/month=%d{MM, aux}/day=%d{dd,
aux}/access.%d{yyyy-MM-dd}.log
</fileNamePattern>
</rollingPolicy>
</appender>
<logger name="fr.company" level="ERROR" additivity="false">
<appender-ref ref="error"/>
</logger>
<logger name="fr.company" level="WARN" additivity="false">
<appender-ref ref="error"/>
</logger>
<logger name="fr.company" level="DEBUG" additivity="false">
<appender-ref ref="debug"/>
</logger>
<logger name="fr.company" level="INFO" additivity="false">
<appender-ref ref="trafic"/>
</logger>
<logger name="org.apache.activemq" level="WARN" additivity="false">
<appender-ref ref="error"/>
</logger>
<logger name="org.springframework" level="INFO" additivity="false">
<appender-ref ref="access"/>
<appender-ref ref="trafic"/>
</logger>
<logger name="springfox.documentation" level="WARN" additivity="false">
<appender-ref ref="error"/>
</logger>
<logger name="org.hibernate" level="WARN" additivity="false">
<appender-ref ref="error"/>
</logger>
<logger name="com.zaxxer" level="WARN" additivity="false">
<appender-ref ref="error"/>
</logger>
<root>
<appender-ref ref="trafic"/>
<appender-ref ref="access"/>
<appender-ref ref="debug"/>
<appender-ref ref="error"/>
</root>
还有我的依赖:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
以及记录器声明/使用:
@Slf4j
@Service
public class EventProcessor {
public EventProcessor() {
log.info("Event initialized with '{}' uuid received", getEventUuid());
log.debug("Event initialized with '{}' uuid received", getEventUuid());
}
您知道为什么,INFO 行正确写入 debug.log 而不是 DEBUG 行吗?...
非常感谢您
解决方案
<logger name="fr.company" level="ERROR" additivity="false">
<appender-ref ref="error"/>
</logger>
<logger name="fr.company" level="WARN" additivity="false">
<appender-ref ref="error"/>
</logger>
<logger name="fr.company" level="DEBUG" additivity="false">
<appender-ref ref="debug"/>
</logger>
<logger name="fr.company" level="INFO" additivity="false">
<appender-ref ref="trafic"/>
</logger>
您正在配置同一个记录器四次。只有最后一个配置有效(将日志级别设置为 INFO)。
您似乎想要的是在 DEBUG 处拥有记录器,将所有附加程序添加到其中,然后在附加程序中再次过滤以控制输出(您已经在这样做)。
<logger name="fr.company" level="DEBUG" additivity="false">
<appender-ref ref="error"/>
<appender-ref ref="debug"/>
<appender-ref ref="trafic"/>
</logger>
推荐阅读
- python - 即使我定义了名称“delta_scroll”,也没有定义它?
- python - 为什么 jupyter notebook 包在 aws sagemaker notebook 实例中不起作用?
- r - 地图内的地图?使用两个数据框列表中的列
- amazon-web-services - 嵌套 XML 数据 AWS Glue
- tensorflow - 从 Tensorflow 预训练嵌入中获取词汇表
- c# - 如何访问 csv 文件并将数据插入 csv
- ios - 添加新数组不会更新我在 Swift Xcode 中的总数组计数
- jmeter - Jmeter HLS 插件错误 - 主/从配置。线程 [StandardJMeterEngine,5,RMI 运行时] java.lang.NullPointerException: null
- python - Python中的无限输出
- compass - 我正在制作一个 qibla 方向应用程序,我的 qible 方向有点偏离目标。我的代码如下