java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > logback.xml和logback-spring.xml的区别

关于logback.xml和logback-spring.xml的区别及说明

作者:tony_bfx

这篇文章主要介绍了关于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>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文