searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

logrotate实现nginx日志切割

2024-11-15 09:18:03
0
0

Nginx默认没有提供对于日志的切割功能,因此随着时间增长,日志文件会不断增大,影响日志写入性能。Logrotate是一个日志文件管理工具,可以自动实现日志切割、轮转、压缩、删除等,可以有效实现nginx日志切割。

1. 安装logrotate

大多数 Linux 发行版已经预装了 logrotate。如果没有安装,可以通过包管理器安装:

sudo apt-get install logrotate  # Debian/Ubuntu
sudo yum install logrotate      # CentOS/RHEL

2. 配置logrotate

logrotate 的配置文件通常位于 /etc/logrotate.conf,而特定应用的日志配置文件通常放在 /etc/logrotate.d/ 目录下。为了配置 Nginx 日志切割,我们可以在 /etc/logrotate.d/ 目录下创建一个名为 nginx 的配置文件。

3. 配置示例

/path/to/log/*.log
{
        daily
        missingok
        rotate 7
        maxsize 10k
        olddir /old/dir/path
        createolddir 755 root root
        dateext
        dateformat .%Y-%m-%d-%H
        notifempty
        compress
        delaycompress
        sharedscripts
        postrotate
                if [ -f /path/to/nginx.pid ]; then
                        kill -USR1 `cat /path/to/nginx.pid`
                fi
        endscript
}
daily:每天切割日志文件。
missingok:如果指定的日志文件不存在,logrotate 不会报错并继续处理其他日志文件。
rotate:切割文件保留的最大个数。
maxsize:切割阈值,当日志文件超过maxsize后,即使未达到切割频率也会触发切割。
olddir:归档目录。
createolddir:若归档目录不存在,则创建。
dateext:归档日志文件后缀。
dateformat:指定归档日志文件后缀格式。
notifempty:若日志文件为空,则不进行切割。
compress:归档日志进行压缩。
delaycompress:延迟压缩,即最近一个归档日志不进行压缩。
sharedscripts:共享指令,仅调用一次。

postrotate:日志切割后触发调用。

4. logrotate调度

(1)依赖logrotate cron调度,将上述配置文件置于/etc/logrotate.d/目录下,默认每天执行一次,适用于一般场景;
(2)自定义crontab定时任务;
 

0条评论
0 / 1000
m****n
4文章数
0粉丝数
m****n
4 文章 | 0 粉丝
原创

logrotate实现nginx日志切割

2024-11-15 09:18:03
0
0

Nginx默认没有提供对于日志的切割功能,因此随着时间增长,日志文件会不断增大,影响日志写入性能。Logrotate是一个日志文件管理工具,可以自动实现日志切割、轮转、压缩、删除等,可以有效实现nginx日志切割。

1. 安装logrotate

大多数 Linux 发行版已经预装了 logrotate。如果没有安装,可以通过包管理器安装:

sudo apt-get install logrotate  # Debian/Ubuntu
sudo yum install logrotate      # CentOS/RHEL

2. 配置logrotate

logrotate 的配置文件通常位于 /etc/logrotate.conf,而特定应用的日志配置文件通常放在 /etc/logrotate.d/ 目录下。为了配置 Nginx 日志切割,我们可以在 /etc/logrotate.d/ 目录下创建一个名为 nginx 的配置文件。

3. 配置示例

/path/to/log/*.log
{
        daily
        missingok
        rotate 7
        maxsize 10k
        olddir /old/dir/path
        createolddir 755 root root
        dateext
        dateformat .%Y-%m-%d-%H
        notifempty
        compress
        delaycompress
        sharedscripts
        postrotate
                if [ -f /path/to/nginx.pid ]; then
                        kill -USR1 `cat /path/to/nginx.pid`
                fi
        endscript
}
daily:每天切割日志文件。
missingok:如果指定的日志文件不存在,logrotate 不会报错并继续处理其他日志文件。
rotate:切割文件保留的最大个数。
maxsize:切割阈值,当日志文件超过maxsize后,即使未达到切割频率也会触发切割。
olddir:归档目录。
createolddir:若归档目录不存在,则创建。
dateext:归档日志文件后缀。
dateformat:指定归档日志文件后缀格式。
notifempty:若日志文件为空,则不进行切割。
compress:归档日志进行压缩。
delaycompress:延迟压缩,即最近一个归档日志不进行压缩。
sharedscripts:共享指令,仅调用一次。

postrotate:日志切割后触发调用。

4. logrotate调度

(1)依赖logrotate cron调度,将上述配置文件置于/etc/logrotate.d/目录下,默认每天执行一次,适用于一般场景;
(2)自定义crontab定时任务;
 

文章来自个人专栏
nginx源码学习
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0