1.首先需要配置根logger:
log4j.rootLogger = level , appenderName1 , appenderName2....
这里level指的是输出级别,设定level同级或以上级别的信息将被输出。级别如下:FATAL>ERROR>WARN>INFO>DEBUG
2.之后配置日志的输出目的地:
输出到控制台:
log4j.appender.appenderName =org.apache.log4j.ConsoleAppender
输出到文件:
log4j.appender.appenderName =org.apache.log4j.FileAppender
log4j.appender.D.File = logs/log.log (信息将被保存在当前根目录下的logs文件夹中的log.log文件中)
输出到文件,每天产生一个新的文件:
log4j.appender.appenderName =org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
输出到文件,文件达到一定大小则产生一个新文件:
log4j.appender.appenderName =org.apache.log4j.RollingFileAppender
log4j.appender.D.File = logs/log.log
输出到指定的任何地方:log4j.appender.D.File=org.apache.log4j.WriterAppender
3.设置日志新信息写入的方式:
log4j.appender.D.Append = true (true表示接在旧的信息之后,false表示覆盖旧的信息)
4.配置日志信息的格式
以HTML格式布局:
log4j.appender.D.layout = org.apache.log4j.HTMLLayout
灵活地指定布局:
log4j.appender.D.layout = org.apache.log4j.PatternLayout
包含日志信息的级别和信息字符串:
log4j.appender.D.layout = org.apache.log4j.SimpleLayout
包含日志产生的线程、时间等信息:
log4j.appender.D.layout = org.apache.log4j.TTCCLayout
设置格式时,需要的打印参数如下:
%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 )
比如,输出“2012-08-22 13:57:51 [ main:0 ] - [ ERROR ] error ”这样的日志信息,则格式设置语句如下:
log4j.appender.D.layout.ConversionPattern =%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
举个栗子,将日志信息输出到文件,每天新建一个文件,输出类似“2012-08-22 13:58:27 [ main:0 ] - [ ERROR ] .pdf文件提取异常“的日志信息,完整配置如下:
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = true
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 ] %c%m%n
ps:这篇文章排版和字体颜色很乱,但是绝对不是我的问题。。。。我也想改,不知道怎么回事,改不了:(