log4j日志配置有两种方式:log4j.xml 和log4j.properties两种,这里介绍xml的配置方式。
一.引入jar包
commons-logging 和 log4j
二.在web.xml定义log配置文件并设置监听器
备注:web.xml文件中也可以不进行log的配置,只需要配置文件名字是 log4j.xml 或者 log4j.properties ,项目启动时会自动查找是否存在
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:spring/config/log4j.xml</param-value> //指向log配置文件的路径
</context-param>
<!--定义LOG4J监听器-->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<!-- 此配置是指定项目根目录 value的值可以随意取,如果不定义,value将会缺省为“webapp.root” -->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>account.root</param-value>
</context-param>
三.完成log4j.xml文件,比如,文件目录为spring/config/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,名字是console(自己取名),将日志信息输出到控制台 -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="ImmediateFlush" value="true"/>
<!-- 设置日志输出的样式 -->
<layout class="org.apache.log4j.PatternLayout">
<!-- 设置日志输出的格式 -->
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}][%-5p]%F:%L - %m%n"/>
</layout>
</appender>
<!-- 创建一个appender,名字是file-info(自己取名),将日志信息输出到文件 -->
<appender name="file-info" class="org.apache.log4j.DailyRollingFileAppender">
<!-- 设置日志信息输出文件全路径名,路径名可以写绝对路径和相对路径,如下是相对路径, account.root是第二步在web.xml配置的项目根目录名称-->
<param name="File" value="${account.root}/account-info.log"/>
<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name="Append" value="true"/>
<!-- 备份文件的个数,会自动转化为目标文件-->
<param name="MaxBackupIndex" value="30"/>
<!-- 设置日志多久回滚一次,即产生一个新的日志文件(这里设置了一天) -->
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}][%-5p]%F:%L - %m%n"/>
</layout>
<!--过滤器设置输出的级别-->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<!-- 设置日志输出的最小级别 -->
<param name="LevelMin" value="trace"/>
<!-- 设置日志输出的最大级别 -->
<param name="LevelMax" value="info"/>
</filter>
</appender>
<!-- 创建一个logger,name指向一个包名,additivity="false"表示root配置对此包下的日志打印不生效。
level 表示日志级别, appender-ref 表示依赖定义的哪个appender(可以配置一个或多个)
如下配置解释:对com.cn包及子包下的所有日志打印有效,日志级别是info,对file-info的配置都生效(打印到文件中)。
-->
<logger name="com.cn" additivity="false">
<level value="info"/>
<appender-ref ref="file-info"/>
</logger>
<!-- root配置对所有的日志打印进行输出, <logger additivity="false"> 的不生效
-->
<root>
<priority value="info"/>
<appender-ref ref="console"/>
<appender-ref ref="file-info"/>
</root>
</log4j:configuration>