使用slf4j输出日志到文件
log4j.properties
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
|
### set log levels ### log4j.rootLogger=debug, stdout, D, E #ConsoleAppender,控制台输出 #FileAppender,文件日志输出 #SMTPAppender,发邮件输出日志 #SocketAppender,Socket 日志 #NTEventLogAppender,Window NT 日志 #SyslogAppender, #JMSAppender, #AsyncAppender, #NullAppender #文件输出:RollingFileAppender #log4j.rootLogger = INFO,logfile ### 输出到控制台 ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out ### 布局格式,可以灵活指定 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout ### 消息格式化 log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss:SSSS} %m%n ### 输出到日志文件 ### log4j.appender.D=org.apache.log4j.RollingFileAppender log4j.appender.D.File=logs/log.log log4j.appender.D.Append= true log4j.appender.D.Threshold=DEBUG log4j.appender.D.layout=org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss:SSSS} %m%n # 一个 log 文件的大小,超过这个大小就又会生成 1 个日志 # KB ,MB,GB log4j.appender.D.MaxFileSize=5MB # 最多保存 3 个文件备份 log4j.appender.D.MaxBackupIndex= 5 ### 保存异常信息到单独文件 ### log4j.appender.E=org.apache.log4j.RollingFileAppender log4j.appender.E.File=logs/error.log log4j.appender.E.Append= true log4j.appender.E.Threshold=ERROR log4j.appender.E.layout=org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss:SSSS} method:%l %m%n # 一个 log 文件的大小,超过这个大小就又会生成 1 个日志 # KB ,MB,GB log4j.appender.E.MaxFileSize=5MB # 最多保存 3 个文件备份 log4j.appender.E.MaxBackupIndex= 5 |
slf4j将部分日志打印在其他文件中
logback.xml配置中新增一个FileAppender
并定义输出格式和路径
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
<? xml version = "1.0" encoding = "UTF-8" ?> < configuration > < property name = "log.base" value = "/logs" /> < property name = "log.moduleName" value = "zhxy-service-order" /> <!-- 模块名称, 影响日志配置名,日志文件名 --> < property name = "log.base.order" value = "/logs/orderLog" /> < property name = "log.max.size" value = "1024MB" /> <!-- 日志文件大小 --> <!-- 彩色日志 --> <!-- 彩色日志依赖的渲染类 --> < conversionRule conversionWord = "clr" converterClass = "org.springframework.boot.logging.logback.ColorConverter" /> < conversionRule conversionWord = "wex" converterClass = "org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> < conversionRule conversionWord = "wEx" converterClass = "org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> <!-- 彩色日志格式 --> < property name = "CONSOLE_LOG_PATTERN" value = "${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" /> <!-- Console 输出设置 --> < appender name = "ConsoleLog" class = "ch.qos.logback.core.ConsoleAppender" > < encoder charset = "UTF-8" > <!-- <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>--> < pattern >${CONSOLE_LOG_PATTERN}</ pattern > </ encoder > </ appender > <!-- Info日志文件输出 --> < appender name = "FileInfoLog" class = "ch.qos.logback.core.rolling.RollingFileAppender" > <!--只输出INFO--> < filter class = "ch.qos.logback.classic.filter.LevelFilter" > <!--过滤 INFO--> < level >DEBUG</ level > <!--匹配到就禁止--> < onMatch >ACCEPT</ onMatch > <!--没有匹配到就允许--> < onMismatch >DENY</ onMismatch > </ filter > <!-- 设置日志不超过${log.max.size}时的保存路径,注意如果 是web项目会保存到Tomcat的bin目录 下 --> < File >${log.base}/${log.moduleName}_info.log</ File > <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。--> < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" > <!--日志文件输出的文件名--> < FileNamePattern >${log.base}/${log.moduleName}_info_%d{yyyy-MM-dd}.%i.log.zip</ FileNamePattern > <!-- 当天的日志大小 超过${log.max.size}时,压缩日志并保存 --> < timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" > < maxFileSize >${log.max.size}</ maxFileSize > </ timeBasedFileNamingAndTriggeringPolicy > </ rollingPolicy > <!--日志输出的文件的格式 --> < encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder" > <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> < pattern >%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread]%logger{56}.%method\(\):%L -%msg%n</ pattern > < charset >UTF-8</ charset > </ encoder > </ appender > <!--Error日志文件输出--> < appender name = "FileErrorLog" class = "ch.qos.logback.core.rolling.RollingFileAppender" > < filter class = "ch.qos.logback.classic.filter.ThresholdFilter" > <!--设置日志级别,过滤掉info日志,只输入error日志--> < level >ERROR</ level > </ filter > <!-- 设置日志不超过${log.max.size}时的保存路径,注意如果 是web项目会保存到Tomcat的bin目录 下 --> < File >${log.base}/${log.moduleName}_error.log</ File > <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。--> < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" > <!--日志文件输出的文件名--> < FileNamePattern >${log.base}/${log.moduleName}_error_%d{yyyy-MM-dd}.%i.log.zip</ FileNamePattern > <!-- 当天的日志大小 超过${log.max.size}时,压缩日志并保存 --> < timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" > < maxFileSize >${log.max.size}</ maxFileSize > </ timeBasedFileNamingAndTriggeringPolicy > </ rollingPolicy > <!--日志输出的文件的格式 --> < encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder" > <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> < pattern >%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread]%logger{56}.%method\(\):%L -%msg%n</ pattern > < charset >UTF-8</ charset > </ encoder > </ appender > <!-- Info日志文件输出 --> < appender name = "OrderLog" class = "ch.qos.logback.core.rolling.RollingFileAppender" > <!--只输出INFO--> < filter class = "ch.qos.logback.classic.filter.LevelFilter" > <!--过滤 INFO--> < level >DEBUG</ level > </ filter > <!-- 设置日志不超过${log.max.size}时的保存路径,注意如果 是web项目会保存到Tomcat的bin目录 下 --> < File >${log.base.order}/${log.moduleName}_info.log</ File > <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。--> < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" > <!--日志文件输出的文件名--> < FileNamePattern >${log.base.order}/${log.moduleName}_info_%d{yyyy-MM-dd}.%i.log.zip</ FileNamePattern > <!-- 当天的日志大小 超过${log.max.size}时,压缩日志并保存 --> < timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" > < maxFileSize >${log.max.size}</ maxFileSize > </ timeBasedFileNamingAndTriggeringPolicy > </ rollingPolicy > <!--日志输出的文件的格式 --> < encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder" > <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> < pattern >%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread]%logger{56}.%method\(\):%L -%msg%n</ pattern > < charset >UTF-8</ charset > </ encoder > </ appender > <!--日志等级设置--> < logger name = "org.springframework" level = "error" ></ logger > < root level = "info" > < appender-ref ref = "ConsoleLog" /> </ root > <!-- 为某个包下的所有类的指定Appender 这里也可以指定类名称例如:com.aa.bb.ClassName --> < logger name = "com.company" level = "debug" > < appender-ref ref = "FileInfoLog" /> < appender-ref ref = "FileErrorLog" /> </ logger > < logger name = "order" level = "debug" > < appender-ref ref = "OrderLog" /> </ logger > </ configuration > |
在需要额外打印日志的地方
1
2
|
Logger orderLog = LoggerFactory.getLogger( "order" ); orderLog.info( "singleOrder params: {}" ,params); |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_39898191/article/details/121620834