log4详解

log4详解为何要使用日志日志是项目开发中不可缺少的一部分,没有日志的项目并不完整。日志在调试、异常定位、数据分析中都有不可替代的作用。1.调试日志可以在调试过程中,可以代替大量的System.out,并且在调试结束后只需要通过设置日志级别就可以不再打印调试日志。2.异常定位项目在运行过程中出现各

大家好,欢迎来到IT知识分享网。log4详解

 

为何要使用日志

日志是项目开发中不可缺少的一部分,没有日志的项目并不完整。日志在调试、异常定位、数据分析中都有不可替代的作用。

1. 调试

日志可以在调试过程中,可以代替大量的System.out,并且在调试结束后只需要通过设置日志级别就可以不再打印调试日志。

2. 异常定位

项目在运行过程中出现各种各样的错误是不可避免的,通过日志我们可以快速的找到出现异常的代码块,定位出问题所在,以提出解决方案。

3. 数据分析

大数据的兴起,使得大量的日志分析成为可能,ELK也让日志分析门槛降低了很多。日志中蕴含了大量的用户数据,包括点击行为,兴趣偏好等,用户画像对于公司下一步的战略方向有一定指引作用。

 

log4j的日志级别

log4j一共7个日志级别,优先级由高到低分别是OFF>FATAL>ERROR>WARN>INFO>DEBUG>ALL。设置的级别以及比设置级别高的日志会被打印,比设置级别低的日志不会被打印。

log4j建议只使用4个级别,优先级由高到低分别是ERROR、 WARN、INFO、DEBUG。

 

log4j的使用

要使用log4j记录日志,就需要在项目中导入jar包,并设定配置文件。在配置文件中需要对Logger、Appender、Layout进行相应配置。Log4j支持两种配置文件格式,一种是xml,一种是properties。

log4j.properties文件配置如下:

1. 配置根logger

log4j.rootLogger = level, appenderName1, appenderName2, …

level 表示设定日志的最低记录级别,可以是7的日志级别的一个或者自定义级别。

appenderName 表示日志信息要输出到哪里,可以同时指定多个输出目的地,用逗号隔开。

如: log4j.rootLogger = INFO, CONSOLE

2. 配置日志信息输出目的地Appender

log4j.appender.appenderName = className

appenderName 表示在配置根中自定义的输出目的地名称。

className 可设置如下

1. org.apache.log4j.ConsoleAppender

2. org.apache.log4j.FileAppender

3. org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)

4. org.apache.log4.RollingFileAppender (文件到达指定大小时产生一个新文件)

5. org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)

(1)ConsoleAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Target=System.err:默认值是System.out。
(2)FileAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=D:/logs/logging.log4j:指定消息输出到logging.log4j文件中。
(3)DailyRollingFileAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=D:/logs/logging.log4j:指定当前消息输出到logging.log4j文件中。
DatePattern=’.’yyyy-MM:每月滚动一次日志文件,即每月产生一个新的日志文件。当前月的日志文件名为logging.log4j,前一个月的日志文件名为logging.log4j.yyyy-MM。
另外,也可以指定按周、天、时、分等来滚动日志文件,对应的格式如下:
1)’.’yyyy-MM:每月
2)’.’yyyy-ww:每周
3)’.’yyyy-MM-dd:每天
4)’.’yyyy-MM-dd-a:每天两次
5)’.’yyyy-MM-dd-HH:每小时
6)’.’yyyy-MM-dd-HH-mm:每分钟
(4)RollingFileAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=D:/logs/logging.log4j:指定消息输出到logging.log4j文件中。
MaxFileSize=100KB:后缀可以是KB, MB 或者GB。在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logging.log4j.1文件中。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数,例如,设为2则可以产生logging.log4j.1,logging.log4j.2两个滚动文件和一个logging.log4j文件。

3. 配置日志信息的输出格式Layout

log4j.appender.appenderName.layout = className

className 可设置如下

1. org.apache.log4j.HTMLayout (以HTML表格形式布局)

2. org.apache.log4.PatternLayout (可灵活指定布局模式)

3. org.apache.log4j.SimpleLayout (包含日志级别和信息字符串)

4. org.apache.log4j.TTCCLayout (包含日志产生的时间、线程、类别、嵌套等信息)

(1)HTMLLayout选项:
LocationInfo=true:输出java文件名称和行号,默认值是false。
Title=My Logging: 默认值是Log4J Log Messages。

(2)PatternLayout选项

ConversionPattern = %m%n 设定日志显示格式

格式化说明符

%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这样的多客户多线程的应用中。
%%:输出一个”%”字符。
另外,还可以在%与格式字符之间加上修饰符来控制其最小长度、最大长度、和文本的对齐方式。如:
1) c:指定输出category的名称,最小的长度是20,如果category的名称长度小于20的话,默认的情况下右对齐。
2)%-20c:”-“号表示左对齐。
3)%.30c:指定输出category的名称,最大的长度是30,如果category的名称长度大于30的话,就会将左边多出的字符截掉,但小于30的话也不会补空格。

log4j配置实例

log4j配置文件实现了日志输出到控制台、文件、数据库日志表,文件回滚、发送日志邮件、自定义标签等功能。

1. 输出到控制台

log4j.rootLogger=DEBUG,console,dailyFile,im
log4j.additivity.org.apache=true

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

2. 输出到文件

log4j.rootLogger=DEBUG,console,dailyFile,im
log4j.additivity.org.apache=true

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

 

先看一个常见的log4j.properties文件,它是在控制台和myweb.log文件中记录日志:

 

log4j.rootLogger=DEBUG, stdout, logfile

 

log4j.category.org.springframework=ERROR

log4j.category.org.apache=INFO

 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] – %m%n

 

log4j.appender.logfile=org.apache.log4j.RollingFileAppender

log4j.appender.logfile.File=${myweb.root}/WEB-INF/log/myweb.log

log4j.appender.logfile.MaxFileSize=512KB

log4j.appender.logfile.MaxBackupIndex=5

log4j.appender.logfile.layout=org.apache.log4j.PatternLayout

log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] – %m%n

 

 

 

 

 

 

 

 

 

参考文档:

Log4J日志整合及配置详解

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/30703.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信