Apache Log4j-常用配置信息

作者:聂勇 欢迎转载,请保留作者信息并说明文章来源!

一、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>

BufferedIOBufferSize用于配置使用内存缓冲,可减少写硬盘的次数,对于写日志量非常大的场合提高性能效果显著!!!