在开发java项目时,更好的了解项目运行状况,和异常分析,我们通常会记录程序的运行日志,本篇文章就将介绍如果在java项目中利用log4j记录日志(.properties配置文件的方式) 首先将log4j 包放入项目中,本文以log4j-1.2.17.jar 为例;可以从官网下载(官网地址:http://logging.apache.org/) 添加好jar包之后,我们开始创建并配置log4j,在src下创建log4j.properties内容如下:
以下内容只是列出一些常用写法,并不适合直接应用与项目中,需要根据具体情况自己调整后配置到项目中
##跟配置
log4j.rootLogger=debug,console,I,D,E,F
##控制台日志输出配置
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=info
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%5p] %d{yyyy-MM-dd HH:mm:ss}: %-4r [%t] ( %F,%L ) - %m%n
##fatal级别日志输出配置
log4j.appender.F=org.apache.log4j.RollingFileAppender
log4j.appender.F.Append=true
log4j.appender.F.Threshold=fatal
log4j.appender.F.MaxFileSize=1024KB
log4j.appender.F.MaxBackupIndex=100
log4j.appender.F.File=fatal.log
log4j.appender.F.layout=org.apache.log4j.PatternLayout
log4j.appender.F.layout.ConversionPattern=[%5p] %d{yyyy-MM-dd HH:mm:ss}: %-4r [%t] ( %F,%L ) - %m%n
##error级别日志输出配置
log4j.appender.E=org.apache.log4j.RollingFileAppender
log4j.appender.E.Append=true
log4j.appender.E.Threshold=error
log4j.appender.E.MaxFileSize=1024KB
log4j.appender.E.MaxBackupIndex=100
log4j.appender.E.File=error.log
log4j.appender.E.layout=org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern=[%5p] %d{yyyy-MM-dd HH:mm:ss}: %-4r [%t] ( %F,%L ) - %m%n
##info级别日志输出配置
log4j.appender.I=org.apache.log4j.RollingFileAppender
log4j.appender.I.Append=true
log4j.appender.I.Threshold=info
log4j.appender.I.MaxFileSize=1024KB
log4j.appender.I.MaxBackupIndex=100
log4j.appender.I.File=debug.log
log4j.appender.I.layout=org.apache.log4j.PatternLayout
log4j.appender.I.layout.ConversionPattern=[%5p] %d{yyyy-MM-dd HH:mm:ss}: %-4r [%t] ( %F,%L ) - %m%n
##debug级别日志输出配置
log4j.appender.D=org.apache.log4j.RollingFileAppender
log4j.appender.D.Append=true
log4j.appender.D.Threshold=debug
log4j.appender.D.MaxFileSize=1024KB
log4j.appender.D.MaxBackupIndex=100
log4j.appender.D.File=debug.log
log4j.appender.D.layout=org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern=[%5p] %d{yyyy-MM-dd HH:mm:ss}: %-4r [%t] ( %F,%L ) - %m%n
在需要输出日志的类中定义Log4j
protected final Logger log = Logger.getLogger(Log4jTest.class);
log.info("info msg");
log.error("error msg");
log.fatal("fatal msg");
log.debug("debug");
下面主要说明一下配置文件中各配置项目的意义 Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。 配置根Logger(log4j.rootLogger)
log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , …
其中 [level]
是日志输出级别,共有5级: FATAL 0、ERROR 3、WARN 4、INFO 6、DEBUG 7;Appender 为日志输出目的地,Log4j提供的appender有以下几种:
- org.apache.log4j.ConsoleAppender(控制台),
- org.apache.log4j.FileAppender(文件),
- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
Layout:日志输出格式,Log4j提供的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 )