解决springboot整合logback-spring.xml后无法生成日志文件以及控制台不输出debug级别的日志
解决springboot整合logback-spring.xml后控制台不输出debug级别的日志今天我去配置项目的拦截器的时候,想在拦截器里面打印一些debug的日志信息,发现一直无法打印出来,而日志文件能够正常的记录,我就自己去测试了一下,发现了最终的问题所在。首先我去检查了我日志文件中对于debug级别的日志处理,我发现没有任何问题<!-- console --><appe
·
解决springboot整合logback-spring.xml后控制台不输出debug级别的日志
解决无法生成日志文件
产生原因:logback日志框架只能加载特定名称的配置文件,无法加载我们自定义的logback-spring.xml这个名字的配置文件,下面是官方文档的描述
- Logback默认配置的步骤(官方文档的原话)
- Logback 尝试查找名为* logback-test.xml * 在 Classpath 中的文件。
- 如果未找到此类文件,则 logback 尝试查找名为* logback.groovy * 在 Classpath 中的文件。
- 如果找不到这样的文件,它将检查文件* logback.xml * 在 Classpath 中 …
- 如果找不到此类文件,则通过在类中查找文件* META-INF\services\ch.qos.logback.classic.spi.Configurator *,使用服务提供者加载设施(在 JDK 1.6 中引入)来解决com.qos.logback.classic.spi.Configurator接口的实现。路径。其内容应指定所需的
Configurator
实现的完全限定的类名。- 如果以上方法均未成功,则 logback 会使用BasicConfigurator自动进行自我配置,这会将日志输出定向到控制台。
根据上述的步骤,可知容器加载不到logback-spring.xml这个名称的配置文件,所以我们必须要让框架发现我们的配置文件,主要有以下两种方法:
- 将名称改为logback-spring.xml或者logback.xml即可
- 在配置文件中指定对应名称的配置文件,例如:
logging:
config: classpath:logback-spring.xml #开发和部署时的配置
解决控制台不输出debug级别的日志
今天我去配置项目的拦截器的时候,想在拦截器里面打印一些debug的日志信息,发现一直无法打印出来,而日志文件能够正常的记录,我就自己去测试了一下,发现了最终的问题所在。
首先我去检查了我日志文件中对于debug级别的日志处理,我发现没有任何问题
<!-- console -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debug</level>
</filter>
</appender>
然后就去写了一个测试类去测试
@SpringBootTest
public class LoggerTest {
Logger logger = LoggerFactory.getLogger(LoggerTest.class);
@Test
void logTest1(){
logger.debug("debug info");
logger.warn("warn info");
logger.error("error info");
}
}
运行结果
发现只打印了warn级别和error级别的日志,我就去看了一下我的配置文件,我发现我去声明包的日志级别时,声明错了,我的项目应该是在com.zky下,而我写成了com.zky.community
修改后
原因:由于我使用的是slf4j来作为日志处理,而slf4j的配置文件的包下的默认日志级别是info,低于info级别的信息都不会被打印(例如debug,trace),所以我们需要保证我们需要去debug所在类的日志级别是debug。
最终结果:成功打印!!!
更多推荐
已为社区贡献4条内容
所有评论(0)