日志切分

本贴最后更新于 560 天前,其中的信息可能已经天翻地覆

一共提供有两种方式去切分日志

方法一:shell 脚本

脚本包含两个文件,一个 ziplog.conf​配置文件,一个 ziplog.sh​脚本文件,两个文件需要放在同一个目录下

image

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 有处理需要切分的日志文件,表示配置正常

image

修改默认定时执行时间(可选)

如果配置文件中添加了 daily​ 参数 ( 上面 tomcatlog 第二个参数 ) 每天会定时执行, 也可以配置 weekly​ 或者 mothly​表示每周或者每月执行一次

daily 和 weekly 和 monthly 这三个参数。默认执行时间的配置文件 在 /etc/anacrontab​ 根据需求可以进行修改

image

参数含义

RANDOM_DELAY 最大的随机的延迟时间, 基础的延迟时间是 5 分钟, 则延迟执行的时间为 5 到 45 之间

START_HOURS_RANGES 开始时间 上面配置文件 3-22 表示 凌晨 3 点 22 执行

cron.daily 中 delayin minutes 时间为 5

**默认的具体执行的时间为 3:22 + (5~45)**​

修改上面参数,可以控制定时 执行时间

  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    148 引用 • 257 回帖

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...