在java中,设置logging.level.root 和类的日志级别,类上的日志级别不生效

在apoolo中通过logging.level设置日志级别时,同时配置root和具体类的级别时,类级别不生效,日志无法打印

配置如下:
logging.level.root = warn
logging.level.com.xx.aa.Myclass = info

服务启动后,只打印了warn级别的日志,Myclass 类中info级别日志没打印

尝试一、
刚开始想的是,颠倒下配置的顺序,先配置指定类的日志级别,会不会就好了
改成
logging.level.com.aa.cc.Myclass = info
logging.level.root = warn
后,还是不打印指定类日志

尝试二、
刚开始只加logging.level.root的设置,服务启动后,再添加具体类的日志设置logging.level.com.aa.cc.Myclass
竟然可以打印类中info日志了,可是什么原因呢?

而且。。每次发版都要改下这块配置挺麻烦的,于是在通义千问上搜了搜,找到原因了
在这里插入图片描述在这里插入图片描述
终于知道为什么不能同时设置了,嗯,然后就是一顿操作
在logback.xml中添加指定类的logger

<logger name="com.xx.aa.Myclass" additivity="false">
        <level value="info"/>
        <appender-ref ref="ASYNC"/>
    </logger>

那来测试下效果吧,root和类日志都配置后,启动服务,类日志级别也打印了,,一切正常了

### 日志级别配置问题分析 在 `logback-spring.xml` 中,如果发现 `DEBUG` 级别日志未正确打印到控制台,可能是由于以下原因导致的: #### 根日志级别设置 确保根日志级别设置为 `DEBUG`。如果根日志级别设置为较高的级别(如 `INFO` 或 `WARN`),则低于该级别的日志(如 `DEBUG`)将不会被打印[^1]。以下是正确的根日志级别配置示例: ```xml <root level="DEBUG"> <appender-ref ref="CONSOLE" /> </root> ``` #### 控制台输出配置 控制台输出需要通过 `ConsoleAppender` 配置。如果 `ConsoleAppender` 未正确配置或未启用,则可能导致日志无法打印到控制台。以下是一个完整的 `ConsoleAppender` 配置示例: ```xml <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> ``` 确保 `ConsoleAppender` 被正确引用到根日志或特定的日志器中。 #### 特定包或日志级别 有时,某些特定包或日志级别可能被单独设置为较高的级别(如 `INFO` 或 `WARN`),这会导致这些包或的 `DEBUG` 级别日志无法打印。可以通过以下方式为特定包或设置日志级别: ```xml <logger name="com.example.myapp" level="DEBUG" additivity="false"> <appender-ref ref="CONSOLE" /> </logger> ``` #### Spring Boot 的日志级别覆盖 Spring Boot 提供了通过 `application.properties` 或 `application.yml` 文件配置日志级别的功能。如果这些文件中的日志级别配置与 `logback-spring.xml` 冲突,则可能导致日志级别未按预期生效。例如,以下配置会覆盖 `logback-spring.xml` 中的根日志级别: ```properties logging.level.root=INFO ``` 确保 `application.properties` 或 `application.yml` 文件中的日志级别配置与 `logback-spring.xml` 一致。 #### 示例配置 以下是一个完整的 `logback-spring.xml` 配置示例,确保 `DEBUG` 级别日志能够正确打印到控制台: ```xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="DEBUG"> <appender-ref ref="CONSOLE" /> </root> <logger name="com.example.myapp" level="DEBUG" additivity="false"> <appender-ref ref="CONSOLE" /> </logger> </configuration> ``` #### 日志框架冲突 如果项目中引入了多个日志框架(如 Log4j Logback 同时存在),可能导致日志配置冲突,从而影响日志输出。确保项目中只使用一个日志框架。例如,在 `pom.xml` 中排除不必要的依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> <exclusions> <exclusion> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-to-slf4j</artifactId> </exclusion> </exclusions> </dependency> ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值