使用log4j实现分割tomcat日志功能
要在 Tomcat 中使用 Log4j 分割日志文件,可以通过以下步骤实现。我们将使用 Log4j 的 `RollingFileAppender` 来按文件大小或时间分割日志文件。
步骤 1:添加 Log4j 依赖
确保 Tomcat 的 `lib` 目录中包含 Log4j 的 JAR 文件:
1. 下载 Log4j 1.x 的 JAR 文件(如 `log4j-1.2.17.jar`)。
2. 将 JAR 文件放到 Tomcat 的 `lib` 目录(`$CATALINA_HOME/lib`)。
步骤 2:创建 `log4j.properties` 配置文件
在 Tomcat 的 `conf` 目录(`$CATALINA_HOME/conf`)中创建一个 `log4j.properties` 文件,配置如下:
# 设置根 Logger,输出到控制台和文件
log4j.rootLogger=INFO, CONSOLE, FILE
# 配置控制台输出
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# 配置文件输出,按文件大小分割
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=${catalina.base}/logs/tomcat.log
log4j.appender.FILE.MaxFileSize=10MB # 每个日志文件最大 10MB
log4j.appender.FILE.MaxBackupIndex=10 # 最多保留 10 个备份文件
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# 配置 Tomcat 内部日志
log4j.logger.org.apache.catalina=INFO, FILE
log4j.logger.org.apache.coyote=INFO, FILE
log4j.logger.org.apache.jasper=INFO, FILE
步骤 3:修改 Tomcat 启动脚本
为了让 Tomcat 使用 Log4j,需要修改 Tomcat 的启动脚本(`catalina.sh` 或 `catalina.bat`)。
Linux/Unix (`catalina.sh`)
1. 打开 `$CATALINA_HOME/bin/catalina.sh`。
2. 在文件开头添加以下内容:
export CATALINA_OPTS="$CATALINA_OPTS -Dlog4j.configuration=file:$CATALINA_HOME/conf/log4j.properties"
Windows (`catalina.bat`)
1. 打开 `$CATALINA_HOME/bin/catalina.bat`。
2. 在文件开头添加以下内容:
set CATALINA_OPTS=%CATALINA_OPTS% -Dlog4j.configuration=file:%CATALINA_HOME%/conf/log4j.properties
步骤 4:禁用 Tomcat 默认日志
Tomcat 默认使用 `java.util.logging`,我们需要禁用它,改为使用 Log4j。
1. 打开 `$CATALINA_HOME/conf/logging.properties`。
2. 注释掉所有 `java.util.logging` 的配置,例如:
# handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
# .handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
步骤 5:重启 Tomcat
1. 保存所有修改。
2. 重启 Tomcat:
$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh
步骤 6:验证日志分割
1. 查看 `$CATALINA_HOME/logs` 目录,应该会生成 `tomcat.log` 文件。
2. 当日志文件大小达到 `MaxFileSize`(如 10MB)时,Log4j 会自动分割日志文件,生成类似 `tomcat.log.1`、`tomcat.log.2` 的备份文件。
按时间分割日志
如果需要按时间分割日志(如每天生成一个日志文件),可以使用 `DailyRollingFileAppender`:
# 配置文件输出,按时间分割
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.File=${catalina.base}/logs/tomcat.log
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd # 每天生成一个日志文件
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
注意事项
1. 确保 Log4j 的 JAR 文件版本与配置兼容。
2. 如果使用 Log4j 2.x,配置文件格式和 Appender 名称会有所不同。
3. 如果日志文件未生成,检查 Tomcat 启动日志,确认 Log4j 是否正确加载。
通过以上步骤,Tomcat 的日志将使用 Log4j 进行管理,并支持按大小或时间分割日志文件。
更多推荐




所有评论(0)