一:log4j简介
1、简介
日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。
2、log4j与log4j2的区别(本文使用log4j)
配置文件类型
log4j通过.properties作为主配置文件,而log4j 2则弃用了这种方式,采用.xml、.json、.jsn方式来做,可能这也是技术发展的一个必然性,毕竟properties文件的可阅读性真的是有点差。
核心JAR包
log4j只需要引入一个jar包即可,
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
log4j 2则是需要2个核心
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.5</version>
</dependency>
二:配置详解
### 设置日志界别:debug,三个appder:stdout、D、E###
log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制抬 ###
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,SSS} method:%l%n%m%n
### 输出DEBUG级别以上的日志到=/log_log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = /log_log
log4j.appender.D.Append = true
log4j.appender.logfile.DataPattern='.'yyyy-MM-dd--归档日志文件名,加File形成log_log.2020-02-09
log4j.appender.logfile.encoding=UTF-8
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR级别以上的日志到=/error_log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =/error_log
log4j.appender.E.Append = true
log4j.appender.logfile.DataPattern='.'yyyy-MM-dd--归档日志文件名,加File形成err_log.2020-02-09
log4j.appender.logfile.encoding=UTF-8
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
三:其他说明
1、日志级别
级别说明
DEBUG 输出调试信息;指出细粒度信息事件对调试应用程序是非常有帮助的。
INFO 输出提示信息;消息在粗粒度级别上突出强调应用程序的运行过程。
WARN 输出警告信息;表明会出现潜在错误的情形。
ERROR 输出错误信息;指出虽然发生错误事件,但仍然不影响系统的继续运行。
FATAL 输出致命错误;指出每个严重的错误事件将会导致应用程序的退出。
ALL level 打开所有日志记录开关;是最低等级的,用于打开所有日志记录。
OFF level 关闭所有日志记录开关;是最高等级的,用于关闭所有日志记录。
级别等级
OFF(关闭)>FATAL(致命的)>ERROR(错误)>WARN(警告)>INFO(信息)>DEBUG(调试)>ALL(所有)
2、关键解析
Appender--为日志输出目的地
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
appder选项--appder选项配置
Threshold=DEBUG 指定日志消息的输出最低层次
ImmediateFlush=true 默认值是true,意谓着所有的消息都会被立即输出
Target=System.err 默认情况下是:System.out,指定输出控制台
Threshold=DEBUF 指定日志消息的输出最低层次
File=mylog.txt 指定消息输出到mylog.txt文件,
Append=false 默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容
MaxFileSize=100KB 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件
MaxBackupIndex=2 指定可以产生的滚动文件的最大数
ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n 自定义输出格式
Layout--日志输出格式
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
打印参数--Log4J采用类似C语言中的printf函数的打印格式格式化日志信息
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“
”,Unix平台为“
”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy_MMM_dd HH:mm:ss:SSS},输出类似:2002_10_18 22:10:28:921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )
四:实践使用