最近开始接触log4j,总结了一下:
log4j的配置文件(log4j.properties),将配置文件放在src目录下,这样的话log4j会自动读取,
如果不在src下,需要手动的在程序中读取一下log4j的配置文件。
如下:
#我认为这句就相当于声明了一个日志记录器mail,级别是debug,意识是高debug信息的信息都会记录
#也可以指定多个日志记录器,例如:log4j.rootLogger=DEBUG,L1,L2
log4j.rootLogger=DEBUG,mail
#下面这两句这句表示mail这个记录器,只记录debug以上的信息,且只会记录mail这个记录器要求记录的信
#息,不会去记录别的记录器的信息。若不写这两句,mail记录器会记录所有的日志信息
log4j.logger.mail=DEBUG,mail
log4j.additivity.mail=false
#这句话指明该记录器是每天生成一个日志文件
log4j.appender.mail=org.apache.log4j.DailyRollingFileAppender
#表明日志文件的路径和名字,第一次日志文件的生成叫做mail
log4j.appender.mail.File=./log/mail/log_
#表明日志文件每天的文件名规则,下面这句表明生成的文件名叫mail.+日期
log4j.appender.CASE.DatePattern='yyyy-MM-dd'.html'
#下面两句表明日志的格式,生成格式为日期+程序中输出的内容
log4j.appender.mail.layout=org.apache.log4j.PatternLayout
log4j.appender.mail.layout.ConversionPattern=%d{yyyy-MM-dd} %m%n
注意:
在测试的时候怎么也出不来想要的类似“log_2015-02-07.html”这样的日志文件,老是只有一个"log_"的文件,经过上网查资料才搞清楚,今天生成的日志是以 ”log_“的形式存储的,当到明天的时候是把7日生成的log_文件加入7日的日期(log_2015-02-07.html)保存起来,然后在创建一个8日的log_文件,依次类推。
在程序中获得mail记录器的方式如下,注意Logger类的包,不要引错
Logger log = Logger.getLogger("mail");//代码
log4j.appender.mail.layout.ConversionPattern中的输出格式:
- %n - 换行
- %m - 日志内容
- %p - 日志级别(FATAL, ERROR, WARN, INFO, DEBUG or custom)
- %r - 程序启动到现在的毫秒数
- %% - percent sign in output
- %t - 当前线程名
- %d - 日期和时间,
- 常用的格式有 %d{DATE}, %d{ABSOLUTE}, %d{HH:mm:ss,SSS}, %d{ddMMyyyy HH:mm:ss,SSS}。。。
- %l - 同 %F%L%C%M
- %F - java源文件名
- %L - java源码行数
- %C - java类名,%C{1} 输出最后一个元素
- %M-java方法名
%n - 换行 %m - 日志内容 %p - 日志级别(FATAL, ERROR, WARN, INFO, DEBUG or custom) %r - 程序启动到现在的毫秒数 %% - percent sign in output %t - 当前线程名 %d - 日期和时间, 常用的格式有 %d{DATE}, %d{ABSOLUTE}, %d{HH:mm:ss,SSS}, %d{ddMMyyyy HH:mm:ss,SSS}。。。 %l - 同 %F%L%C%M %F - java源文件名 %L - java源码行数 %C - java类名,%C{1} 输出最后一个元素 %M-java方法名
示例:
[%d{HH\:mm\:ss\:SSS}][%p] (%c\:%L) - %m%n
稍微花哨点的RollingFileAppender和DailyRollingFileAppender
后面的两个都有rolling,这表示他俩可以实现对日志文件自动归档,
RollingFileAppender-可以按日志文件大小来归档;
DailyRollingFileAppender -按日期进行归档,每天午夜0点会生成新日志文件。
log4j.rootLogger=INFO,stdout, fileout
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd} %m%n
log4j.appender.fileout=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fileout.File=C:\log\log_
log4j.appender.CASE.DatePattern='yyyy-MM-dd'.log'
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.ConversionPattern=%d{yyyy-MM-dd} %m%n