一: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平台为“\r\n”,Unix平台为“\n” %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy_MMM_dd HH:mm:ss:SSS},输出类似:2002_10_18 22:10:28:921 %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )
四:实践使用