作者:聂勇 欢迎转载,请保留作者信息并说明文章来源!
一、Appender
提供的Appender有以下几种:
- org.apache.log4j.ConsoleAppender 控制台
- org.apache.log4j.FileAppender 文件
- org.apache.log4j.DailyRollingFileAppender 每天产生一个日志文件
- org.apache.log4j.RollingFileAppender 文件大小到达指定尺寸的时候产生新文件
- org.apache.log4j.WriterAppender 将日志信息以流格式发送到任意指定的地方
二、Layout
提供的Layout有以下几种:
- org.apache.log4j.HTMLLayout 以HTML表格形式布局
- org.apache.log4j.PatternLayout 可以灵活地指定布局模式
- org.apache.log4j.SimpleLayout 包含日志信息的级别和信息字符串
- org.apache.log4j.TTCCLayout 包含日志产生的时间、线程、类别等等信息
三、输出格式
参数 |
描述 |
%m |
输出代码中指定的消息 |
%p |
输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL |
%r |
输出自应用启动到输出该log信息耗费的毫秒数 |
%c |
输出所属的类目,通常就是所在类的全名 |
%t |
输出产生该日志事件的线程名 |
%n |
输出一个回车换行符,Windows平台为“rn”,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) |
-X |
X信息输出时左对齐 |
%M |
方法名称 |
四、配置样例
xml格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <?xml version="1.0"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration> <appender name="Mail139MarktingInterface" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="D:/log/web.log" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n" /> </layout> </appender> <root> <priority value="debug" /> <appender-ref ref="Mail139MarktingInterface" /> </root> </log4j:configuration>
|
properties格式
1 2 3 4 5 6 7
| log4j.rootLogger=info, file log4j.appender.file = org.apache.log4j.DailyRollingFileAppender log4j.appender.file.File = D:/log/webservices.log log4j.appender.file.Append = true log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%p] %t - %c - %m%n
|
五、性能优化
1 2 3 4 5 6 7 8 9 10
| <appender name="m4center" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="D:/log/m4center.log"/> <param name="Append" value="true"/> <param name="ImmediateFlush" value="true"/> <param name="BufferedIO" value="false"/> <param name="BufferSize" value="8192"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> </layout> </appender>
|
BufferedIO和BufferSize用于配置使用内存缓冲,可减少写硬盘的次数,对于写日志量非常大的场合提高性能效果显著!!!