log4j的配置文件是用来设置日志输出级别,存放位置和日志布局的。
log4j的配置有两种文件格式,log4j.porperties 和 log4j.xml,任选其一都可以。
log4j.porperties 比 log4j.xml要简洁,但是不支持一些高级的配置选项,比如Filters, 自定义的ErrorHandlers和特殊的Appender(即 AsyncAppender)。
log4j.porperties的基本格式如下:(其中appenderName1为用户自己定义的名字)
#配置根Logger log4j.rootLogger=【level】, appenderName1
####用户自定义的一些 Appender #配置日志信息输出 log4j.appender.appenderName1=【Appender】 #配置日志信息的格式(布局) log4j.appender.appenderName1.layout=【Layout】
#配置日志信息打印参数
log4j.appender.appenderName1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
log4j.xml的基本格式如下:(其中appenderName1为用户自己定义的名字)
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" version="22">
####用户自定义的一些 Appender <appender name="appenderName1" class=【Appender】> <layout class=【Layout】> #日志格式 <param name="patternName1" value="%d [%t] %-5p %c [%x] - %m%n"/> #日志打印参数 </layout> <filter class="com.twofishes.config.log4j.LoggerMatchFilter"> #自定义的Filter <param name="loggerToMatch" value="com.twofishes.config"/> <param name="acceptOnMatch" value="false"/> </filter> </appender>
####配置根Logger <root> <priority value=【Level】/> <appender-ref ref="appenderName1"/> </root> </log4j:configuration>
【level】日志的输出级别,有以下几种选项:
FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7
【Appender】 日志输出位置,有以下几种选项:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
【Layout】日志输出格式,有以下几种选项:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
%-4r [%t] %-5p %c %x - %m%n 打印参数,类似C语言中的printf函数的打印格式格式化日志信息,如下:
%m 输出代码中指定的消息 %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL %r 输出自应用启动到输出该log信息耗费的毫秒数 %c 输出所属的类目,通常就是所在类的全名 %t 输出产生该日志事件的线程名 %n 输出一个回车换行符,Windows平台为“ ”,Unix平台为“ ” %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日 22 : 10 : 28 , 921 %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )
配置使用方式:
//方式一:自动快速的使用Log4J缺省的环境
//BasicConfigurator.configure();
//方式二:读取properties文件(自定义位置),但是注意这里文件的加载路径
//PropertyConfigurator.configure("E:/workspace-idea/study-demo/log4j-test/src/main/resources/log4j/log4j.properties");
//PropertyConfigurator.configure(HowUseLog4JDemo.class.getClassLoader().getResource("log4j/log4j.properties").getFile());
//方式三:读取XML文件
//DOMConfigurator.configure("xxx");