一共提供有两种方式去切分日志
方法一:shell 脚本
脚本包含两个文件,一个 ziplog.conf
配置文件,一个 ziplog.sh
脚本文件,两个文件需要放在同一个目录下
ziplog.conf
用来配置需要切分的日志文件,参数如下
LOG_FILES
配置文件,支持通配符-
KEEP_DAYS
压缩日志保存的时间 -
SCRIPT_LOG_FILE
该脚本执行日志文件名,该日志记录了脚本执行的的时间和处理的文件
# 可以配置多个文件,支持通配符
LOG_FILES=(
"/www/server/tomcat/logs/catalina-daemon.out"
"/home/logshell/logs/test*.log"
)
# 保存天数,根据需要进行更改
KEEP_DAYS=15
# 脚本执行日志文件路径
SCRIPT_LOG_FILE="shell.log"
ziplog.sh
shell 脚本,使用 chmod +x ziplog.sh
赋予 shell 可执行权限,建议使用 cron 表达式,每天定时执行一次
执行
-
手动执行 终端输入
bash ziplog.sh
或者./ziplog.sh
-
定时执行,例如每天凌晨三点定时执行:
- 终端输入:
crontab -e
- 添加:
0 3 * * * /path/to/ziplog.sh
- 终端输入:
方法二 :logrotate 工具
使用起来很简单,只需要写个配置文件就行,logrotate 会定时执行
LInux 自带 logrotate 工具用于日志切分
在 /etc/logrotate.d/
文件夹下创建 自己日志切分的配置文件 tomcatlog
填写以下信息
# 可以写多个路径, 需要切分的日志,切分后会进行压缩, 支持通配符
/home/cronlog/catalina-daemon.out
/www/server/tomcat/logs/catalina-daemon.out
{
copytruncate
daily
rotate 30
maxsize 100M
notifempty
dateext
compress
missingok
}
dateformat -%Y-%m-%d-%H-%M-%S
默认是按照日期进行压缩,可以添加参数 dateformat 进行更改
参数含义
-
copytruncate
:将当前日志文件复制一份,然后清空原文件,这样可以避免某些应用程序在运行期间无法重命名或关闭当前日志文件的问题。 -
daily
:每天轮换一次日志文件。 -
rotate 30
:保留最近 30 个日志文件,超过 30 个则会删除最旧的日志文件。 -
maxsize 100M
:当日志文件大小达到 100MB 时进行轮换。 -
notifempty
:如果日志文件为空,则不进行轮换。 -
dateext
:在生成轮换后的日志文件名中添加日期后缀,例如access.log-20220101
。 -
compress
:压缩轮换后的日志文件。 -
missingok
:如果日志文件不存在,则不进行轮换。
测试配置是否正确
logrotate 每天都会自己执行,测试是否生效 -d 参数 debug
不加-d 参数, 表示手动执行
测试执行配置(所有配置)
logrotate -d /etc/logrotate.conf
测试执行指定配置
logrotate -d /etc/logrotate.d/tomcatlog # tomcatlog 名字替换成 自定义配置的名字
可以看到 logrotate 有处理需要切分的日志文件,表示配置正常
修改默认定时执行时间(可选)
如果配置文件中添加了 daily
参数 ( 上面 tomcatlog 第二个参数 ) 每天会定时执行, 也可以配置 weekly
或者 mothly
表示每周或者每月执行一次
daily 和 weekly 和 monthly 这三个参数。默认执行时间的配置文件 在 /etc/anacrontab
根据需求可以进行修改
参数含义
RANDOM_DELAY 最大的随机的延迟时间, 基础的延迟时间是 5 分钟, 则延迟执行的时间为 5 到 45 之间
START_HOURS_RANGES 开始时间 上面配置文件 3-22 表示 凌晨 3 点 22 执行
cron.daily 中 delayin minutes 时间为 5
**默认的具体执行的时间为 3:22 + (5~45)**
修改上面参数,可以控制定时 执行时间
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于