1、日志
web.xml
<!-- log4j的配置 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:conf/spring/log4j.xml</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
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="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p][%d{ISO8601}][%t][%c][%m]%n" />
</layout>
</appender>
<!--
输出方式appender一般有5种:
org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志)
org.apache.log4j.ConsoleAppender (控制台)
org.apache.log4j.FileAppender (文件)
org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)
-->
<appender name="DEBUG" class="org.apache.log4j.RollingFileAppender">
<!--相对于应用服务器的输出路径:jboss容器bin目录下。系统服务启动前,先创建文件-->
<param name="File" value="smp/log/debug/app-debug.log" />
<!--是否追加写入文件: true-是 false-否 -->
<param name="Append" value="true" />
<!--日志文件大小最大值:30MB -->
<param name="MaxFileSize" value="30MB" />
<!--备份文件数量:100个 -->
<param name="MaxBackupIndex" value="100" />
<!--输出的日志文件格式,根据操作系统编码指定-->
<param name="Encoding" value="UTF8" />
<!--日志输出格式-->
<!--
%c 输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的维度(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName)
%d 输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}
%l 输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
%n 换行符
%m 输出代码指定信息,如info(“message”),输出message
%p 输出优先级,即 FATAL ,ERROR 等
%r 输出从启动到显示该log信息所耗费的毫秒数
%t 输出产生该日志事件的线程名
-->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p][%d{ISO8601}][%t][%c][%m]%n" />
</layout>
<!--日志级别过滤器:LevelMin表示最小的级别,LevelMax表示最大的级别,建议不做改动-->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="DEBUG" />
</filter>
</appender>
<appender name="INFO" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="smp/log/info/app-info.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="30MB" />
<param name="MaxBackupIndex" value="100" />
<param name="Encoding" value="UTF8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p][%d{ISO8601}][%t][%c][%m]%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="INFO" />
</filter>
</appender>
<appender name="WARN" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="smp/log/warn/app-warn.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="30MB" />
<param name="MaxBackupIndex" value="100" />
<param name="Encoding" value="UTF8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p][%d{ISO8601}][%t][%c][%m]%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="WARN" />
<param name="LevelMax" value="WARN" />
</filter>
</appender>
<appender name="ERROR" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="smp/log/error/app-error.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="30MB" />
<param name="MaxBackupIndex" value="100" />
<param name="Encoding" value="UTF8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p][%d{ISO8601}][%t][%c][%m]%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
<!-- ==================ibatis输入日志,用于开发阶段使用====================== -->
<logger name="com.ibatis">
<level value="info" />
</logger>
<logger name="com.ibatis.common.jdbc.SimpleDataSource">
<level value="info" />
</logger>
<logger name="com.ibatis.common.jdbc.ScriptRunner">
<level value="info" />
</logger>
<logger name="com.ibatis.common.jdbc.SqlMapClientDelegate">
<level value="info" />
</logger>
<logger name="java.sql.Connection">
<level value="info" />
</logger>
<logger name="java.sql.Statement">
<level value="info" />
</logger>
<logger name="java.sql.PreparedStatement">
<level value="info" />
</logger>
<logger name="java.sql.ResultSet">
<level value="info" />
</logger>
<logger name="org">
<level value="error" />
</logger>
<logger name="com.mchange">
<level value="info" />
</logger>
<logger name="com.opensymphony">
<level value="OFF" />
</logger>
<logger name="freemarker">
<level value="info" />
</logger>
<root>
<!--定义日志的最低输出级别,优先级由高到低分为:OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL-->
<priority value="DEBUG" />
<!--引用的日志记录器-->
<appender-ref ref="STDOUT" />
<appender-ref ref="DEBUG" />
<appender-ref ref="INFO" />
<appender-ref ref="WARN" />
<appender-ref ref="ERROR" />
</root>
</log4j:configuration>
web.xml
<!-- log4j的配置 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:conf/spring/log4j.xml</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
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="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p][%d{ISO8601}][%t][%c][%m]%n" />
</layout>
</appender>
<!--
输出方式appender一般有5种:
org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志)
org.apache.log4j.ConsoleAppender (控制台)
org.apache.log4j.FileAppender (文件)
org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)
-->
<appender name="DEBUG" class="org.apache.log4j.RollingFileAppender">
<!--相对于应用服务器的输出路径:jboss容器bin目录下。系统服务启动前,先创建文件-->
<param name="File" value="smp/log/debug/app-debug.log" />
<!--是否追加写入文件: true-是 false-否 -->
<param name="Append" value="true" />
<!--日志文件大小最大值:30MB -->
<param name="MaxFileSize" value="30MB" />
<!--备份文件数量:100个 -->
<param name="MaxBackupIndex" value="100" />
<!--输出的日志文件格式,根据操作系统编码指定-->
<param name="Encoding" value="UTF8" />
<!--日志输出格式-->
<!--
%c 输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的维度(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName)
%d 输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}
%l 输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
%n 换行符
%m 输出代码指定信息,如info(“message”),输出message
%p 输出优先级,即 FATAL ,ERROR 等
%r 输出从启动到显示该log信息所耗费的毫秒数
%t 输出产生该日志事件的线程名
-->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p][%d{ISO8601}][%t][%c][%m]%n" />
</layout>
<!--日志级别过滤器:LevelMin表示最小的级别,LevelMax表示最大的级别,建议不做改动-->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="DEBUG" />
</filter>
</appender>
<appender name="INFO" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="smp/log/info/app-info.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="30MB" />
<param name="MaxBackupIndex" value="100" />
<param name="Encoding" value="UTF8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p][%d{ISO8601}][%t][%c][%m]%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="INFO" />
</filter>
</appender>
<appender name="WARN" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="smp/log/warn/app-warn.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="30MB" />
<param name="MaxBackupIndex" value="100" />
<param name="Encoding" value="UTF8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p][%d{ISO8601}][%t][%c][%m]%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="WARN" />
<param name="LevelMax" value="WARN" />
</filter>
</appender>
<appender name="ERROR" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="smp/log/error/app-error.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="30MB" />
<param name="MaxBackupIndex" value="100" />
<param name="Encoding" value="UTF8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%p][%d{ISO8601}][%t][%c][%m]%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
<!-- ==================ibatis输入日志,用于开发阶段使用====================== -->
<logger name="com.ibatis">
<level value="info" />
</logger>
<logger name="com.ibatis.common.jdbc.SimpleDataSource">
<level value="info" />
</logger>
<logger name="com.ibatis.common.jdbc.ScriptRunner">
<level value="info" />
</logger>
<logger name="com.ibatis.common.jdbc.SqlMapClientDelegate">
<level value="info" />
</logger>
<logger name="java.sql.Connection">
<level value="info" />
</logger>
<logger name="java.sql.Statement">
<level value="info" />
</logger>
<logger name="java.sql.PreparedStatement">
<level value="info" />
</logger>
<logger name="java.sql.ResultSet">
<level value="info" />
</logger>
<logger name="org">
<level value="error" />
</logger>
<logger name="com.mchange">
<level value="info" />
</logger>
<logger name="com.opensymphony">
<level value="OFF" />
</logger>
<logger name="freemarker">
<level value="info" />
</logger>
<root>
<!--定义日志的最低输出级别,优先级由高到低分为:OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL-->
<priority value="DEBUG" />
<!--引用的日志记录器-->
<appender-ref ref="STDOUT" />
<appender-ref ref="DEBUG" />
<appender-ref ref="INFO" />
<appender-ref ref="WARN" />
<appender-ref ref="ERROR" />
</root>
</log4j:configuration>