关于logback.xml和logback-spring.xml的区别及说明
logback.xml和logback-spring.xml的区别
我们使用SLF4J框架记录日志时,会用到 logback.xml 和 logback-spring.xml 两个不同的配置文件。
logback-spring.xml 只有在Spring应用程序运行的时候才生效,即带有@SpringBootApplication注解的类启动的时候才会生效。
如果不是Spring应用程序,而是一个main方法或者一个JUnit的测试方法,要用 logback.xml 来配置。如果没有logback.xml这个文件,或者logback.xml放的路径不对,则日志仍然是会打印出来的,而且会按照默认的DEBUG级别打印。这样一运行程序会有大量的DEBUG信息,把真正有用的信息都淹没了。
我们要想把这些烦人的DEBUG信息关掉,禁止它输出DEBUG信息,需要自己创建一个名为 logback.xml 的文件。一般Spring Boot项目里面已经带有一个 logback-spring.xml 文件了,最省事的方法是直接把 logback-spring.xml 复制一份,名字改成 logback.xml 就行,里面所有的配置语法都不用改。因为logback-spring和logback除了文件名不同,里面写法是完全一样的。
要想把DEBUG信息关掉,找到root level="DEBUG"这一段,改成ERROR。
<!-- 日志输出级别 --> <root level="ERROR"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> <appender-ref ref="HTML" /> <appender-ref ref="FILE_HTML" /> </root>
logback-spring和logback除了文件名不同,存放的位置也是不同的。
logback-spring.xml存放的位置是在SpringApplication主类所在的项目的resources目录,也就是application.yml或者application.properties所在的目录。
logback.xml存放的位置是在你启动的那个类所在的项目的resources目录。
而且这个resources目录,原本也是没有的,我们手工创建了resources目录之后,还要在IDEA的项目属性里面手工把它指定为资源目录。
分享一个logback.xml/logback-spring.xml(实用)
效果图
代码
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false" scan="true" scanPeriod="1 seconds"> <!-- 注意:若需要用 spring 扩展 profile 支持,则文件名应为 logback-spring.xml,而不是 logback.xml。 --> <springProperty scope="context" name="spring.application.name" source="spring.application.name"/> <springProperty scope="context" name="spring.profiles.active" source="spring.profiles.active"/> <contextName>logback</contextName> <property name="log.path" value="/home/logs/app/${spring.profiles.active}/${spring.application.name}.log"/> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) [%15.15(%thread)] %cyan(%-40.40(%logger{40})) : %-30.30(\(%file:%line\)) : %msg%n</pattern> </encoder> </appender> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern> <maxFileSize>10MB</maxFileSize> <maxHistory>30</maxHistory> <totalSizeCap>10GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%15.15(%thread)] %-40.40(%logger{40}) : %3(%line) : %msg%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="console"/> <appender-ref ref="file"/> </root> </configuration>
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java修饰符 abstract,static,final 的区别详解
以下是对Java修饰符abstract,static,final的区别进行了详细的介绍,需要的朋友可以过来参考下2013-09-09SpringBoot默认包扫描机制及@ComponentScan指定扫描路径详解
这篇文章主要介绍了SpringBoot默认包扫描机制及@ComponentScan指定扫描路径详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11
最新评论