Log4j.xml配置文件
日志级别
ERROR > WARN > INFO > DEBUG > TRACE
如果设置级别为 INFO,则优先级高于等于 INFO 级别(如:INFO、WARN、ERROR)的日志信息将可以
输入到控制台或者文件中,小于该级别的如 DEBUG 和 TRACE 将不会输入。
总结:日志级别越低,输入到控制台or文件中的日志信息越详细。
日志文件
root:设置默认的日志输入等级和风格。
logger:设置自定义日志等级和风格。
appender:可以把日志输入到控制台或文件中去。
解释:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- 日志被输入到文件里,可以配置多久产生一个新的日志信息文件 -->
<appender name="CatalinaOut" class="org.apache.log4j.DailyRollingFileAppender">
<!-- 接收日志的文件全路径名 -->
<param name="File" value="/usr/local/tomcat/logs/catalina.txt" />
<!-- 设置日志备份频率,默认:为每天生成一个日志文件 -->
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<param name="Append" value="true" />
<param name="Encoding" value="UTF-8" />
<!-- 设置日志格式-->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[portal-iWorld][%d{yyyy-MM-dd HH:mm:ss SSS}] %p [%t] %c{1}.%M(%L) | %m%n" />
</layout>
</appender>
<!-- 同上 -->
<appender name="systemErrorLoggerAppender" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="/logs/exchange_www/recent/SYSTEM_ERROR_LOG.txt" />
<param name="DatePattern" value="'.'yyyyMMdd" />
<param name="Append" value="true" />
<param name="Encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n" />
</layout>
</appender>
<!-- 日志输入到控制台 -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<!-- 日志输入格式 -->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss SSS}][%c]-[%m]%n"/>
</layout>
<!--过滤器设置输入的级别-->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<!-- 设置日志可以被输入的最小级别 -->
<param name="levelMin" value="INFO"/>
<!-- 设置日志输入的最大级别 -->
<param name="levelMax" value="ERROR"/>
</filter>
</appender>
<!-- 日志输入到文件 -->
<appender name="fileAppender" class="org.apache.log4j.FileAppender">
<!-- 接收日志的文件全路径名-->
<param name="File" value="/data/applogs/own/fileAppender.log"/>
<!--是否在已存在的文件追加写:默认时true,若为false则每次启动都会删除并重新新建文件-->
<param name="Append" value="false"/>
<param name="Threshold" value="INFO"/>
<!--是否启用缓存,默认false-->
<param name="BufferedIO" value="false"/>
<!--缓存大小,依赖上一个参数(bufferedIO), 默认缓存大小8K -->
<param name="BufferSize" value="512"/>
<!-- 日志输入格式 -->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss SSS}][%c]-[%m]%n"/>
</layout>
</appender>
<!--
1. 指定自定的logger的设置,additivity是否遵循缺省的继承机制
2. 当additivity="false"时,root中的配置就失灵了,不遵循缺省的继承机制
3. 代码中使用Logger.getLogger("accessUserIdLog")获得此输出器,且不会使用根输出器
-->
<logger name="accessUserIdLog" additivity="false">
<level value="INFO" />
<appender-ref ref="CatalinaOut" />
</logger>
<logger name="GetFilmGroupLoger" additivity="false">
<level value="info" />
<appender-ref ref="systemErrorLoggerAppender" />
</logger>
<!-- 根据路径来控制对应包下的文件的日志等级,包中类的日志等级>=设置等级,才找根输出器的appender-->
<logger name="org.springframework.core">
<level value="error" />
</logger>
<logger
name="com.wondertek.portal.iportal.webapp.action.OrderAction">
<level value="info" />
</logger>
<!-- 输入级别是info级别及以上的日志,info及以上的日志都是会输入到CatalinaOut这个appender中 -->
<root>
<level value="info" />
<appender-ref ref="CatalinaOut" />
</root>
</log4j:configuration>
程序中的logger,与log4j.xml中的配置匹配不上,则走root