1. Maven 引入
<!-- LOG 以下两包都可 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<!--
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
-->
2. 配置 log4j.properties
# 日志级别:ALL < DEBUG < INFO < WARN < ERROR < FATAL 当前开启某一级别日志时,大于它的日志也将被开启
# FATAL - 致命级别日志: 指出每个严重的错误事件将会导致应用程序的退出。
# ERROR - 错误级别日志: 指出虽然发生错误事件,但仍然不影响系统的继续运行的信息。
# WARN - 警告级别日志: 表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员的一些提示。
# INFO - 消息级别日志: 用于生产环境中输出程序运行的一些重要信息,但是不能滥用,避免打印过多的日志。
# DEBUG - 调试级别日志: 开发人员可以将任意信息在此打印,比如局部变量的值等等,主要是为了了解程序运行状态,便于调试。
# TRACE - 跟踪级别日志: 一般不使用。
# rootLogger 第一参数为日志级别, 其后参数为日志载体
log4j.rootLogger=DEBUG, C, R
#定义日志输出目的地为控制台
log4j.appender.C=org.apache.log4j.ConsoleAppender
log4j.appender.C.Target=System.out
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:sss}][%p][%c] %m%n
# 定义日志输出到文件 按时间划分日志文件
# 每天产生一个日志文件
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
# 日志打印路径: 1.绝对路径;
#log4j.appender.R.File=E:/logs/debug.log
# 日志打印路径: 2.相对路径${webApp.root}对应当前应用根目录,在web.xml配置webAppRootKey才能使用;
log4j.appender.R.File=${webapp.root}/logs/debug.log
# 定期生成日志文件: yyyy-MM 每月; yyyy-ww 每周; yyyy-MM-dd 每天; yyyy-MM-dd-a 每半天; yyyy-MM-dd-HH 每小时...
log4j.appender.R.DatePattern='('yyyy-MM-dd').log'
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:sss}][%p][%c] %m%n
# 按大小划分日志文件
# log4j.appender.R=org.apache.log4j.RollingFileAppender
# log4j.appender.R.MaxFileSize=100KB
3. web.xml 中配置
<!-- 日志记录, 配置日志文件到项目根目录下 -->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webapp.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>WEB-INF/classes/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.WebAppRootListener</listener-class>
</listener>
<!-- 日志记录 -->
4. 总结
当日志输出到项目跟目录时必须配置 web.xml 中配置; 若输出绝对路径则不需要配置web.xml;