log4j.xml配置详解
相关文章链接:
观前提示:
本文所使用Eclipse版本为Photon Release (4.8.0),JDK为1.8.0_141,Tomcat为9.0.12。
1.配置详解
1.1 Appender
Appender为日志输出目的地,Log4j提供的appender有以下几种:
- ConsoleAppender: org.apache.log4j.ConsoleAppender,日志输出到控制台。
- FileAppender:org.apache.log4j.FileAppender,输出到文件。
- RollingFileAppender:org.apache.log4j.RollingFileAppender,输出到文件,文件达到一定阈值时,自动备份日志文件。
- DailyRollingFileAppender:org.apache.log4j.DailyRollingFileAppender,可定期备份日志文件,默认一天一个文件,也可设置为每分钟一个、每小时一个。
- WriterAppender:org.apache.log4j.WriterAppender,可自定义日志输出位置。
1.2 日志级别
一般日志级别包括:ALL,DEBUG, INFO, WARN, ERROR,FATAL,OFF
Log4J推荐使用:DEBUG, INFO, WARN, ERROR
级别种类详解
- OFF:为最高等级 关闭了日志信息
- FATAL:为可能导致应用中止的严重事件错误
- ERROR:为严重错误 主要是程序的错误
- WARN:为一般警告,比如session丢失
- INFO:为一般要显示的信息,比如登录登出
- DEBUG:为程序的调试信息
- TRACE:为比DEBUG更细粒度的事件信息
- ALL:为最低等级,将打开所有级别的日志
1.3 Layout
Layout为日志输出格式,Log4j提供的layout有以下几种:
- org.apache.log4j.HTMLLayout:以HTML表格形式布局。
- org.apache.log4j.PatternLayout:可以灵活地指定布局模式。
- org.apache.log4j.SimpleLayout:包含日志信息的级别和信息字符串。
- org.apache.log4j.TTCCLayout:包含日志产生的时间、线程、类别等等信息。
1.4 打印参数
- %m:输出代码中指定的消息,如log(message)中的message。
- %M:输出方法名。
- %p:输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 。
- %r:输出自应用启动到输出该log信息耗费的毫秒数 。
- %c:输出所属的类目,通常就是所在类的全名 。
- %C:输出Logger所在类的名称,通常就是所在类的全名。
- %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 ) 。
- %F:输出所在类的类名称,只有类名。
- %L:输出语句所在的行数,只输出数字。
- %%:用来输出百分号“%”。
1.5 代码样例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<!--#log4j中有5级logger ,#FATAL 0 ,#ERROR 3 ,#WARN 4 ,#INFO 6 ,#DEBUG 7 -->
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j">
<!--输出到控制台-->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<!-- 日志输出格式 -->
<layout class="org.apache.log4j.TTCCLayout"/>
</appender>
<!-- 输出日志到文件 -->
<appender name="fileAppender" class="org.apache.log4j.FileAppender">
<!-- 文件文件全路径名 -->
<param name="File" value="${catalina.base}/logs/demo/fileAppender.log"/>
<!-- 是否在已存在的文件追加写:默认时true,若为false则每次启动都会删除并重新新建文件-->
<param name="Append" value="false"/>
<!-- Threshold属性指定输出等级 -->
<param name="Threshole" value="INFO"/>
<!-- 是否启用缓存,默认false-->
<param name="BufferSize" value="false"/>
<!-- 缓存大小,依赖上一个参数(bufferedIO), 默认缓存大小8K -->
<param name="BufferSize" value="512"/>
<!-- 日志输出格式 -->
<layout class="org.apache.log4j.PatternLayout">