在Tomcat中配置7天滚动日志可以通过以下两种主要方式实现:
conf/logging.properties
文件:# 设置7天滚动日志
handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
# 配置Catalina日志
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.rotatable = true
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 7
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8
# 配置localhost日志
2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.rotatable = true
2localhost.org.apache.juli.AsyncFileHandler.maxDays = 7
2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8
# 其他日志处理器类似配置...
首先确保Tomcat已配置使用Log4j 2.x(需要添加相关JAR到lib目录)
创建或修改 conf/log4j2.xml
文件:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<RollingFile name="Catalina"
fileName="${sys:catalina.base}/logs/catalina.log"
filePattern="${sys:catalina.base}/logs/catalina.%d{yyyy-MM-dd}.log">
<PatternLayout pattern="%d [%t] %-5p %c- %m%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
<DefaultRolloverStrategy max="7"/>
</RollingFile>
<RollingFile name="Localhost"
fileName="${sys:catalina.base}/logs/localhost.log"
filePattern="${sys:catalina.base}/logs/localhost.%d{yyyy-MM-dd}.log">
<PatternLayout pattern="%d [%t] %-5p %c- %m%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
<DefaultRolloverStrategy max="7"/>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="org.apache.catalina.core.ContainerBase.[Catalina].[localhost]" level="info" additivity="false">
<AppenderRef ref="Localhost"/>
</Logger>
<Root level="info">
<AppenderRef ref="Catalina"/>
</Root>
</Loggers>
</Configuration>
安装cronolog:
# Ubuntu/Debian
sudo apt-get install cronolog
# CentOS/RHEL
sudo yum install cronolog
修改 conf/server.xml
文件中的Access Log配置:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".log"
pattern="%h %l %u %t "%r" %s %b"
rotatable="true"
renameOnRotate="true"
fileDateFormat="yyyy-MM-dd" />
对于Catalina输出,可以修改 bin/catalina.sh
(Linux)或 bin/catalina.bat
(Windows):
# 修改输出行(大约在文件末尾)
exec "$_RUNJAVA" "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
| /usr/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.log >> /dev/null &
以上配置将确保Tomcat日志按天滚动,并自动保留最近7天的日志文件,删除更早的日志。