复制代码
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219logback-spring.xml配置: <?xml version="1.0" encoding="UTF-8"?> <!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true --> <!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 --> <!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --> <configuration scan="true" scanPeriod="10 seconds" debug="true"> <springProperty scope="context" name="log.path" source="logging.path" default="/home/logs/"/> <contextName>logger-demo</contextName> <!-- 1.日志级别定义 --> <!-- log4j/log4j2 日志级别定义 OFF 《 FATAL 《 ERROR(默认级别) 《 WARN 《 INFO 《 DEBUG 《 TRACE 《 ALL ,Log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG--> <!-- slf4j 日志级别定义 ERROR 《 WARN 《 INFO(默认级别) 《 DEBUG 《 TRACE --> <!-- 2.日志输出定义 --> <!-- log4j appender(日志输出目的地) 类定义 --> <!-- org.apache.log4j.ConsoleAppender(控制台) --> <!-- org.apache.log4j.FileAppender(文件)--> <!-- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)--> <!-- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)--> <!-- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)--> <!-- logback appender(日志输出目的地) 类定义--> <!-- ch.qos.logback.core.ConsoleAppender(控制台) --> <!-- ch.qos.logback.core.FileAppender(文件) --> <!-- ch.qos.logback.core.rolling.RollingFileAppender(可按配置大小切分文件) --> <!-- ch.qos.logback.core.OutputStreamAppender() --> <!-- 3.日志输出格式 --> <!-- org.apache.log4j.HTMLLayout(以HTML表格形式布局)--> <!-- org.apache.log4j.PatternLayout(可以灵活地指定布局模式)--> <!-- org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)--> <!-- org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息)--> <!-- 3.1 org.apache.log4j.PatternLayout 格式参数配置--> <!-- %p:输出日志信息的优先级,即DEBUG,INFO,WARN,ERROR,FATAL。--> <!-- %d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS}。--> <!-- %r:输出自应用程序启动到输出该log信息耗费的毫秒数。--> <!-- %t:输出产生该日志事件的线程名。--> <!-- %l:输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名以及在代码中的行数。例如:test.TestLog4j.main(TestLog4j.java:10)。--> <!-- %c:输出日志信息所属的类目,通常就是所在类的全名。--> <!-- %M:输出产生日志信息的方法名。--> <!-- %F:输出日志消息产生时所在的文件名称。--> <!-- %L::输出代码中的行号。--> <!-- %m::输出代码中指定的具体日志信息。--> <!-- %n:输出一个回车换行符,Windows平台为"rn",Unix平台为"n"。--> <!-- %x:输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。--> <!-- %%:输出一个"%"字符 --> <!-- 还可以在%与格式字符之间加上修饰符来控制其最小长度、最大长度、和文本的对齐方式。如下:--> <!-- c:指定输出category的名称,最小的长度是20,如果category的名称长度小于20的话,默认的情况下右对齐。--> <!-- %-20c:"-"号表示左对齐。--> <!-- %.30c:指定输出category的名称,最大的长度是30,如果category的名称长度大于30的话,就会将左边多出的字符截掉,但小于30的话也不会补空格。--> <!-- 4.logger 实例 设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>日志输出目的地,仅有一个name属性,一个可选的level和一个可选的addtivity属性--> <!-- name:用来指定受此logger约束的某一个包或者具体的某一个类。--> <!-- level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF 还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。--> <!-- 如果未设置此属性,那么当前logger将会继承上级的级别。 addtivity:是否向上级logger传递打印信息。默认是true。--> <!-- <logger name="org.springframework.web" level="info"/>此配置指定包路径下的类获取的日志logger示例将唯同一个对象,并只输出info级别以上的日志--> <!-- <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="ERROR"/> 为全路径名下的类指定日志打印实例,并打印ERROR级别以上的日志 --> <!-- root 节点为log4j 与slf4j 的默认日志根logger实例,用户不显示声明logger的情况下一般都会使用root的appender输出日志信息--> <!-- root 节点是Logger默认日志实例的--> <!-- 5.property 配置是给loggerFactory 上下文环境中配置不同的环境参数,在配置文件中可以使用 "${}" 直接取值--> <!-- <property name="log.path" value="F:/logs" />--> <!-- <property name="log.name" value="catelina.log" />--> <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 --> <!-- 彩色日志格式 --> <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}}"/> <!-- 日志格式和颜色渲染 --> <!-- 彩色日志依赖的渲染类 --> <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"/> <!--输出到控制台--> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>debug</level> </filter> <encoder> <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> <!-- 设置字符集 --> <charset>UTF-8</charset> </encoder> </appender> <!--输出到文档--> <!--level为 DEBUG 日志,时间滚动输出 --> <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/web_debug.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 设置字符集 --> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 日志归档 --> <fileNamePattern>${log.path}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>15</maxHistory> </rollingPolicy> <!-- 此日志文档只记录debug级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>debug</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!--level为 INFO 日志,时间滚动输出 --> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/web_info.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 每天日志归档路径以及格式 --> <fileNamePattern>${log.path}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>15</maxHistory> </rollingPolicy> <!-- 此日志文档只记录info级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>info</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!--level为 WARN 日志,时间滚动输出 --> <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/web_warn.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 此处设置字符集 --> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.path}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>15</maxHistory> </rollingPolicy> <!-- 此日志文档只记录warn级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>warn</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!--level为 ERROR 日志,时间滚动输出 --> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/web_error.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 此处设置字符集 --> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.path}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>15</maxHistory> </rollingPolicy> <!-- 此日志文档只记录ERROR级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!--开发环境:打印控制台--> <springProfile name="dev"> <!--additivity logger的日志不在使用父类logger的appender输出,默认值:true --> <root level="info" additivity="false"> <!--配置默认的root节点Logger的日志输出方式--> <!--以下配置声明root节点logger将日志输出 CONSOLE(控制台 appender), DEBUG_FILE(debug日志文件 appender) ,INFO_FILE(info日志文件 appender) --> <appender-ref ref="CONSOLE"/> <appender-ref ref="DEBUG_FILE"/> <appender-ref ref="INFO_FILE"/> </root> </springProfile> <springProfile name="prod"> <root level="info" additivity="false"> <appender-ref ref="CONSOLE"/> <appender-ref ref="DEBUG_FILE"/> <appender-ref ref="INFO_FILE"/> <appender-ref ref="ERROR_FILE"/> <appender-ref ref="WARN_FILE"/> </root> </springProfile> <springProfile name="test"> <root level="info" additivity="false"> <appender-ref ref="CONSOLE"/> <appender-ref ref="DEBUG_FILE"/> <appender-ref ref="INFO_FILE"/> <appender-ref ref="ERROR_FILE"/> <appender-ref ref="WARN_FILE"/> </root> </springProfile> </configuration>
复制代码
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#使用application.properties 配置logger log4j.rootLogger=DEBUG,console,dailyFile,im log4j.additivity.org.apache=true # 控制台(console) log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.Threshold=DEBUG log4j.appender.console.ImmediateFlush=true log4j.appender.console.Target=System.err log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n # 日志文件(logFile) log4j.appender.logFile=org.apache.log4j.FileAppender log4j.appender.logFile.Threshold=DEBUG log4j.appender.logFile.ImmediateFlush=true log4j.appender.logFile.Append=true log4j.appender.logFile.File=D:/logs/log.log4j log4j.appender.logFile.layout=org.apache.log4j.PatternLayout log4j.appender.logFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n # 回滚文件(rollingFile) log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender log4j.appender.rollingFile.Threshold=DEBUG log4j.appender.rollingFile.ImmediateFlush=true log4j.appender.rollingFile.Append=true log4j.appender.rollingFile.File=D:/logs/log.log4j log4j.appender.rollingFile.MaxFileSize=200KB log4j.appender.rollingFile.MaxBackupIndex=50 log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout log4j.appender.rollingFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n # 定期回滚日志文件(dailyFile) log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender log4j.appender.dailyFile.Threshold=DEBUG log4j.appender.dailyFile.ImmediateFlush=true log4j.appender.dailyFile.Append=true log4j.appender.dailyFile.File=D:/logs/log.log4j log4j.appender.dailyFile.DatePattern='.'yyyy-MM-dd log4j.appender.dailyFile.layout=org.apache.log4j.PatternLayout log4j.appender.dailyFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n # 应用于socket log4j.appender.socket=org.apache.log4j.RollingFileAppender log4j.appender.socket.RemoteHost=localhost log4j.appender.socket.Port=5001 log4j.appender.socket.LocationInfo=true # Set up for Log Factor 5 log4j.appender.socket.layout=org.apache.log4j.PatternLayout log4j.appender.socket.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n # Log Factor 5 Appender log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000 # 发送日志到指定邮件 log4j.appender.mail=org.apache.log4j.net.SMTPAppender log4j.appender.mail.Threshold=FATAL log4j.appender.mail.BufferSize=10 log4j.appender.mail.From = xxx@mail.com log4j.appender.mail.SMTPHost=mail.com log4j.appender.mail.Subject=Log4J Message log4j.appender.mail.To= xxx@mail.com log4j.appender.mail.layout=org.apache.log4j.PatternLayout log4j.appender.mail.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n # 应用于数据库 log4j.appender.database=org.apache.log4j.jdbc.JDBCAppender log4j.appender.database.URL=jdbc:mysql://localhost:3306/test log4j.appender.database.driver=com.mysql.jdbc.Driver log4j.appender.database.user=root log4j.appender.database.password=123456 log4j.appender.database.sql=INSERT INTO LOG4J (Message) VALUES('=[%-5p] %d(%r) --> [%t] %l: %m %x %n') log4j.appender.database.layout=org.apache.log4j.PatternLayout log4j.appender.database.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %
复制代码
1
2
3
4
5
6
7
8
9
10
11Java 日志框架J.U.L ,Commons-logging ,log4j ,slf4j ,log4j2 ,Logback 的关系 1.J.U.L 是java.util.logging JDK Logging组件库,提供了log实现标准的基础类库 2.Apache.Commons Logging是Apache创建的第三方日志模块,提供标准的日志API,可以挂接不同的日志实现。默认使用Log4j,如果没有再使用JDK Logging。它兼容不同的日志实现,对外提供统一的日志接口 3.Log4j 是一种非常流行的日志框架,组件化设计的日志系统 Logger->Appender->Layout->console/file/socket/JDBC/... 是一个成熟的日志基础组件框架 4.SLF4J 全拼为Simple Logging Facade for Java,即“为java提供的简单日志门面”,slf4j并不是一个具体的日志解决方案,实际上,它提供的核心api只是一个名为Logger的接口(里面封装了你可能需要的各种日志方法)和一个名为LoggerFactory工厂类。这个slf4j其实就是外观模式里的那个Facade,它使得你不用太过纠结于某个具体的日志框架,而是只要调用slf4j里的接口就行了。并且slf4j的性能几乎是零消耗的,毕竟它不是什么具体的东西。slf4j同时具有外观模式带来的各种好处,比如在logback和log4j这些子系统间方便切换。 5.Logback类似于Log4j,是一个日志的实现,天然实现slf4j的核心API,,是log4j的改良版本。更快的实现,logback内核重写过,是的性能有了很大的提升,内存占用也更小,logback-classic对slf4j进行了更好的集成,自动重新加载配置文件,当配置文件修改后,logback-classic能自动重新加载配置文件,配置文件能够处理不同的情况,开发人员在不同的环境下(开发,测试,生产)切换的时候,不需要创建多个文件,可以通过<if><else><then>标签来实现,自动压缩已经打出来的日志文件:RollingFileAppender在产生新文件的时候,会自动压缩已经打印出来的日志文件。而且这个压缩的过程是一个异步的过程 6.log4j2 是slf4j的开发者升级后的log4j 基于原有设计进行升级重构的进化版 java log体系: https://juejin.im/post/6844903833257115655#heading-10 Logback详解: https://blog.csdn.net/u014209205/article/details/80830904 slf4j,log4j与lobback的关系: https://www.cnblogs.com/Sinte-Beuve/p/5758971.html
最后
以上就是鲜艳小刺猬最近收集整理的关于通过logback-spring.xml配置,概述log4j与logback之间的使用的全部内容,更多相关通过logback-spring.xml配置,概述log4j与logback之间内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复