docker-compose.yml 中 tomcat 服务部分,添加以下环境变量:
environment:
- TZ=Asia/Shanghai
- UMASK=0022
- LANG=C.UTF-8
- LC_ALL=C.UTF-8
- JAVA_OPTS=-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8确保 conf/logging.properties 中控制台处理器编码为 UTF-8:
java.util.logging.ConsoleHandler.encoding = UTF-8{/collapse-item}
{collapse-item label="日志输出和分割"}
让 Tomcat 输出到 catalina.out
docker-compose.yml,在 tomcat 服务中加:
command: >
bash -c "mkdir -p /usr/local/tomcat/logs && catalina.sh run >> /usr/local/tomcat/logs/catalina.out 2>&1"
日志分割
Tomcat 默认不会分割 catalina.out
它会一直追加写入,文件会越来越大,除非你手动处理。
用 logrotate(宿主机处理)
在宿主机创建配置文件:
sudo nano /etc/logrotate.d/tomcat-catalina内容如下:
(按实际路径)
/opt/1panel/docker/compose/web/tomcat/logs/catalina.out {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}然后手动测试一次:
sudo logrotate -vf /etc/logrotate.d/tomcat-catalina

可选:确认定时任务是否启用
cat /etc/cron.daily/logrotate确保它存在且可执行:
ls -l /etc/cron.daily/logrotatenginx
新建配置文件
sudo nano /etc/logrotate.d/nginx-docker填入以下内容(关键配置):
注意实际路径
/data/vdb/docker/compose/web/nginx/logs/*.log {
daily
missingok
rotate 7
compress
delaycompress
dateext
notifempty
sharedscripts
postrotate
docker kill nginx -s USR1
endscript
}测试配置文件语法
sudo logrotate -d /etc/logrotate.d/nginx-docker手动执行一次(强制轮转)
sudo logrotate -f /etc/logrotate.d/nginx-docker应该能看到类似:
access.log(当前日志)
access.log-20241105(昨天的日志)
access.log-20241104.gz(前天的压缩日志){/collapse-item}
评论 (0)