使用 logrotate 切割服务日志

本文介绍Linux下常用日志切割工具logrotate的使用方法,解决服务日志文件过大的问题,提高问题排查效率,节约磁盘空间。logrotate通过配置文件决定执行行为,默认由cron程序每天执行。文章详细解释了logrotate的配置示例,包括如何创建独立配置文件,检查配置正确性,以及手动执行日志切割。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

后端开发常遇到的一个问题是,服务产生的日志文件过大,在使用日志文件排查问题时,
如果文件过大,会降低排查问题的效率;而且不对文件进行切割,就没法单独的压缩较久远的日志,浪费磁盘空间

下面介绍 linux 下常用的日志切割工具 logrotate 的使用。

linux 系统默认安装了 logrotate,通常由 cron 程序定时执行,执行周期是一天;

可以查看 cron 的执行日志来确认 logrotate 的执行时间:/var/log/cron;

现在说说 logrotate 执行机制;

logrotate 的配置文件会决定它的执行行为;主配置文件为 /etc/logrotate.conf,可以把各个应用要切割的日志单独保存为一个配置文件,并存放在 /etc/logrotate.d/ 目录下,通过在主配置文件增加下面一行内容来引入各个应用的独立配置文件;

 include  /etc/logrotate.d

下图是 logrotate.conf:

假设现在要切割某个 nginx 服务的访问日志,创建 /etc/logrotate.d/www.nginx.conf,内容如下:

/www/nginx/logs/access.log {
   su root root
   daily
   copytruncate
   size +500M
   dateext
   compress
   olddir /www/nginx/logs
   notifempty
}

然后保存即可,第二天以后就会定时执行这份配置的日志切割了。

那万一配置有问题,总不能等一天出错了才能发现吧,因此还需要提前检查配置文件的正确性,其实就是将自动执行改为手动执行即可,如果这次不想立即切割,加上 -d 选项即可:

sudo logrotate -d /etc/logrotate.d/www.nginx.conf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值