最近新接手个项目,生产环境报错要查日志定位bug时,发现所有级别的日志全部输出在一个文件里,导致文件臃肿,并且难以浏览文件和定位错误日志。于是重改日志输出,最终决定使用slf4j+logback来做日志输出。
Simple Logging Facade for Java (SLF4J) 充当各种日志框架(例如 java.util.logging、logback、log4j)的简单外观或抽象,允许最终用户在部署 时插入所需的日志框架。如果项目中使用了Lombok插件,则直接在类前加上@Slf4j注解即可,否则需要引入一下依赖:
复制代码
1
2
3
4
5
6
7
8
9
10<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </dependency> <!--使用Lombok时不用引入--> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> </dependency>
然后在resources下新建logback.xml文件
复制代码
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true"> <!-- 日志编码 --> <property name="CHARSET" value="utf-8"></property> <!-- 日志记录格式 --> <property name="ERROR_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L-%msg%n" /> <property name="INFO_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L-%msg%n" /> <!--控制台日志, 控制台输出 少了这一部分则不会在控制台上打印--> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <!-- 日志记录器,日期滚动记录 --> <appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文件的路径及文件名 --> <file>/home/iot/sdmchome/logs/error.log</file> <!--开发环境可以使用这个配置测试,测试时会在本地项目生成log文件夹--> <!--<file>log/error.log</file>--> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>/home/iot/sdmchome/logs/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxFileSize>6MB</maxFileSize> <maxHistory>30</maxHistory> </rollingPolicy> <!-- 追加方式记录日志 --> <append>true</append> <!-- 日志文件的格式 --> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${ERROR_PATTERN}</pattern> <charset>${CHARSET}</charset> </encoder> <!-- 此日志文件只记录error级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>error</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 日志记录器,日期滚动记录 --> <appender name="FILEINFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 生产环境:正在记录的日志文件的路径及文件名 --> <file>/home/iot/sdmchome/logs/info.log</file> <!--开发环境可以使用这个配置测试,测试时会在本地项目生成log文件夹--> <!--<file>log/info.log</file>--> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>/home/iot/sdmchome/logs/info-%d{yyyy-MM-dd}.%i.log </fileNamePattern> <maxFileSize>6MB</maxFileSize> <maxHistory>30</maxHistory> </rollingPolicy> <!-- 追加方式记录日志 --> <append>true</append> <!-- 日志文件的格式 --> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${ERROR_PATTERN}</pattern> <charset>${CHARSET}</charset> </encoder> <!-- 此日志文件只记录info级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>info</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <root level="INFO"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILEERROR" /> <appender-ref ref="FILEINFO" /> </root> </configuration>
最后
以上就是犹豫帅哥最近收集整理的关于slf4j+logback实现日志分级输出至文件的全部内容,更多相关slf4j+logback实现日志分级输出至文件内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复