SpringBoot默认选用logback进行日志管理,前一篇讲述了默认配置日志的参数,然而这些内容比较初级,并不一定能满足我们更加特殊的需求(比如输出到多个不同的配置文件,不同的包路劲选择不同的输出方式等)
所以本篇的内容,主要介绍logback.xml配置文件的语法,虽然与SpringBoot本身没有太多的关联性,但在SpringBoot项目中却非常实用
I. logback配置
也不针对语法进行逐一说明了,直接针对常见的xml配置文件进行分析,反正看完也会忘的,等到要用的时候,一般都是拷贝一个魔板,改改名啥的就over了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d [%t] %-5level %logger{36}.%M\(%file:%line\) - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender>
<appender name="story" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <File>logs/story.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/arch/story.%d.%i.log</fileNamePattern> <maxHistory>3</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern> %d %p (%file:%line\)- %m%n </pattern> <charset>UTF-8</charset> </encoder> </appender>
<logger name="com.git.hui" level="DEBUG" additivity="false"> <appender-ref ref="STDOUT"/> <appender-ref ref="story"/> </logger>
<logger name="com.github.hui" level="DEBUG" additivity="false"> <appender-ref ref="STDOUT"/> <appender-ref ref="story"/> </logger>
<root level="INFO"> <appender-ref ref="STDOUT"/> </root> </configuration>
|
1. appender
从前面的配置文件中,appender这个标签算是比较重要的,上面定义了两类,一个控制台输出,一个文件输出
a. 控制台or文件的选择
appender的class属性来选择
- 控制台:
ch.qos.logback.core.ConsoleAppender
- 滚动时间窗口文件:
ch.qos.logback.core.rolling.RollingFileAppender
b. 输出格式
以实例 <pattern>%d [%t] %-5level %logger{36}.%M\(%file:%line\) - %msg%n</pattern>
进行说明
- %m输出的信息,
- %p日志级别,
- %t线程名,
- %d日期,
- %c类的全名,
- %i索引【从数字0开始递增】
- %M方法名
- %lines输出日志的行数
- %F/%file源码文件名
c. 日志归档相关
一般是每天归档一下日志文件,避免所有的日志都堆积到一个文件,当单文件特别大时,分析也不是一件容易的事情,常见的两个设置参数
1 2 3 4 5 6
| <maxHistory>3</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy>
|
2. logger
另外一个标签就是logger了,name表示哪些包路径下的日志输出会匹配这个(或者logger直接使用了这个name,也会匹配他)
另外两个重要的属性,level表示输出日志的级别,挺实用的,可以根据实际场景设置某些日志输出,如框架层我只关系WARN级别日志;我自己的业务可能就像关注INFO的日志了
additivity 这个属性,很容易不设置,如果不设置,那么当一个日志输出,有多个logger匹配时,这个日志就会被输出多次,建议设置为false
II. 使用
根据前面配置的博文说明,logback.xml配置文件,推荐的用法是
- 命名为
logback-spring.xml
- 放在资源文件的根目录,或者config目录下
一般输出日志的用法,最常见的两种方式
1 2 3 4 5
| private static final Logger LOGGER = LoggerFactory.getLogger(SelfBeanLoader.class);
LOGGER.info("info: {}", xxxx);
|
第二中就是使用lombok的 @Slf4j
注解
1 2 3 4 5 6
| @Slf4j public class SelfBeanLoader { ... log.info("xxx"); }
|
III. 其他
0. 项目
推荐相关博文阅读
1. 一灰灰Blog
一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
2. 声明
尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
3. 扫描关注
一灰灰blog
QrCode
知识星球
goals
Be the first person to leave a comment!