Tomcat日志

本文介绍了如何在Docker环境下解决Tomcat日志输出及管理问题。通过创建run.sh脚本,结合Dockerfile,确保Tomcat容器在后台运行并生成catalina.out日志。同时,提供了宿主机上实现日志按日期备份的cut_log.sh脚本,并使用cronjob定时执行,避免日志丢失。
摘要由CSDN通过智能技术生成

1. 背景

Docker启动Tomcat默认是CMD ["catalina.sh", "run"],日志将会托管给Docker容器,没有生成日志文件,只能使用命令 docker logs -f <CONTAINER_ID> 查看。

只有使用startup.sh启动才会输出catalina.out。但是Docker如果以startup.sh启动,这时Docker需要一个后台执行程序才会保持容器不退出。

2. 解决方案

以我们的T_SMS项目为例说明具体步骤。

2.1 新建run.sh文件

文件中使用startup.sh启动并一直tail -f catalina.out就不会退出容器,run.sh文件内容如下:

#! /bin/bash
bash /usr/local/tomcat/bin/startup.sh
tail -f /usr/local/tomcat/logs/catalina.out

2.2 修改Dockerfile文件

FROM lucksoft/tomcat:9-jdk8
ENV TZ Asia/Shanghai

WORKDIR /usr/local/tomcat

RUN rm -rf /usr/local/tomcat/webapps/*

ARG WAR_FILE

COPY server.xml /usr/local/tomcat/conf/
# 复制文件到容器内部的指定目录
COPY run.sh /usr/local/tomcat/bin/
# 赋予权限
RUN chmod 777 /usr/local/tomcat/bin/run.sh

COPY target/${WAR_FILE} /usr/local/tomcat/webapps/

RUN mv /usr/local/tomcat/webapps/${WAR_FILE} /usr/local/tomcat/webapps/ROOT.war
# run.sh启动
CMD ["/usr/local/tomcat/bin/run.sh"]
# CMD ["catalina.sh", "run"]

可以通过docker run运行一个容器, 或者在Rancher中部署,使用docker exec命令进入容器就可以发现/usr/local/tomcat/logs目录下就会出现catalina.out日志文件。但是每次重启服务catalina.out日志都会清空,日志就会丢失,不利于日志的备份。我们可以通过下面的方案解决。

2.3 Tomcat日志文件按日期备份

下面的操作都是在宿主机进行

  1. 进入宿主机的sbin目录,创建一个cut_log目录,然后再新建目录中创建cut_log.sh文件,具体命令如下:
cd sbin
mkdir cut_log
cd cut_log
vi cut_log.sh

cut_log.sh文件的输入内容如下,保存退出:

#!/bin/bash

cd `dirname $0`

DATE=`date +%Y-%m-%d`

DATE30=`date -d '30 days ago' +%Y-%m-%d`

# 宿主机数据卷
cd /data/app/cc-omp/oss/sms_login

ls others >/dev/null  2>&1 

if [ $? != 0 ];then

  mkdir others

fi

find . -type f -mtime +30 -exec mv {} others/ \;

cp catalina.out catalina.out.${DATE}

#清空
echo > catalina.out

执行下面的命令给文件授权:

chmod +x cut_log.sh

执行下面的命令配置定时器:

crontab -e

添加以下内容,并保存退出:

59 23 * * * /sbin/cut_log/cut_log.sh

可通过以下命令查看是否已生效:

crontab -l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值