Log4j.xml配置文件

日志级别

  ERROR > WARN > INFO > DEBUG > TRACE
  如果设置级别为 INFO,则优先级高于等于 INFO 级别(如:INFO、WARN、ERROR)的日志信息将可以
输入到控制台或者文件中,小于该级别的如 DEBUG 和 TRACE 将不会输入。
  总结:日志级别越低,输入到控制台or文件中的日志信息越详细。

日志文件

  root:设置默认的日志输入等级和风格。
  logger:设置自定义日志等级和风格。
  appender:可以把日志输入到控制台或文件中去。
Log4j.xml配置文件
解释:

<?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