手动阀

Good Luck To You!

nginx日志分割 for linux

在Linux系统中,Nginx的日志分割可以通过多种方式实现,以下是一些常见的方法:

使用logrotate工具

logrotate是一个用于管理日志文件的工具,可以自动对日志进行轮转、压缩和删除。

步骤:

1、安装logrotate(如果尚未安装):

   sudo aptget install logrotate  # Debian/Ubuntu
   sudo yum install logrotate      # CentOS/RHEL

2、配置logrotate

创建或编辑一个logrotate配置文件,例如/etc/logrotate.d/nginx

   sudo nano /etc/logrotate.d/nginx

3、添加以下内容到配置文件中

   /var/log/nginx/*.log {
       daily
       missingok
       rotate 14
       compress
       delaycompress
       notifempty
       create 0640 wwwdata adm
       sharedscripts
       postrotate
           [ f /var/run/nginx.pid ] && kill USR1cat /var/run/nginx.pid
       endscript
   }

解释:

daily: 每天轮转一次日志。

missingok: 如果日志文件丢失,不报错。

rotate 14: 保留14个旧的日志文件。

compress: 压缩旧的日志文件。

delaycompress: 延迟一天再压缩。

notifempty: 如果日志文件为空,则不轮转。

create 0640 wwwdata adm: 创建新的日志文件,权限为0640,所有者为wwwdata,组为adm。

sharedscripts: 确保postrotate脚本只执行一次。

postrotate: 在日志轮转后发送USR1信号给Nginx主进程,通知它重新打开日志文件。

4、测试配置

   sudo logrotate d /etc/logrotate.d/nginx

5、手动运行logrotate(可选):

   sudo logrotate f /etc/logrotate.d/nginx

使用Nginx内置日志切割功能

Nginx本身也提供了日志切割的功能,通过配置access_logerror_log指令来实现。

示例配置:

在Nginx配置文件中(通常是/etc/nginx/nginx.conf),你可以这样配置:

http {
    log_format main '$remote_addr  $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
    access_log /var/log/nginx/access.log main;
    error_log /var/log/nginx/error.log warn;
    ...
}

你可以使用crontab来定期切割这些日志文件。

设置crontab任务:

1、编辑crontab

   sudo crontab e

2、添加以下内容

   0 0 * * * /usr/sbin/logrotate /etc/logrotate.d/nginx > /dev/null 2>&1

这行命令表示每天午夜执行一次logrotate。

两种方法都可以有效地对Nginx日志进行分割和管理。logrotate是更为通用和灵活的方法,适用于大多数Linux系统;而Nginx内置的日志切割功能则更加简单直接,适合特定需求,选择哪种方法取决于你的具体需求和环境。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.3

Copyright Your WebSite.Some Rights Reserved.