Home  >  Article  >  Operation and Maintenance  >  Linux operation and maintenance logrotate log rotation - rotate nginx logs

Linux operation and maintenance logrotate log rotation - rotate nginx logs

齐天大圣
齐天大圣Original
2020-11-12 17:11:452394browse

There is a very useful rotation service on the Linux system-logrotate. Through this service, log files can be managed in rotation. When the log file is too large, it can be cut into multiple small log files and compressed. nginx's default log files access.log and error.log log files will not rotate by themselves. Therefore, logrotate is often used to rotate nginx logs.

logrotate

The running of the logrotate program is executed daily in the system's scheduled tasks.

# cat /etc/cron.daily/logrotate 
#!/bin/sh

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status
……

Next, let’s take a look at logrotate’s configuration file /etc/logrotate.conf.

# 通过man logrotate查看更多信息

# 下面是默认配置
weekly <=== 默认一周进行一次轮替操作
rotate 4 <=== 默认保存4份日志文件
create <==== 当轮替完成后,创建一个新的日志文件
dateext <=== 轮替的文件名前加上日期以便管理
#compress  <=== 默认对轮替的文件不进行压缩,如果想压缩,就把#去掉

#将/etc/logrotate.d目录下的文件加载进来
include /etc/logrotate.d


# 下面是两个日志文件轮替的规则
/var/log/wtmp {  <=== 指定文件名
    monthly <=== 一个月进行一次轮替
    create 0664 root utmp <=== 新的日志文件权限及所有人,所属组设置
 minsize 1M <=== 日志文件至少有1M时候才进行轮替
    rotate 1  <=== 只保留一份日志文件
}

/var/log/btmp {
    missingok <=== 如果日志文件不存在,则不报错,直接忽略
    notifempty <=== 如果日文文件是空的则不进行轮替
    monthly
    create 0600 root utmp
    rotate 1
}

After understanding the configuration file of logrotate, we can make a log ourselves for rotation practice. First, we prepare a log file

# ll logrotate_learn.log 
-rwx------ 1 www www 223288003 Nov 12 09:05 logrotate_learn.log

Here, we'd better add the -a attribute to the log file, so that we can only add new content to it.

# chattr +a logrotate_learn.log

Next, we have to think about the rotation rules of the log file. Here, we plan to rotate and compress the rotated files once a week, and only rotate when the file size exceeds 10M. In addition, we will keep 7 log files. Here, there is another thing to note. Because the file has the a attribute, the a attribute needs to be deleted before the rotation, and then added after the rotation is completed. So, now we need to write the configuration rules

vim /etc/logrotate.d/logrotate_learn

# 轮替练习
/root/logrotate_learn.log
{
    missingok
    notifempty
    weekly
    rotate 7
    size=10M
    create 0700 www www
    compress 
    sharedscripts
    prerotate
       /usr/bin/chattr -a /root/logrotate_learn.log
    endscript
    sharedscripts
    postrotate
        /usr/bin/chattr +a /root/logrotate_learn.log
    endscript
}

Now, let’s do the rotation.

# logrotate [-vf] logfile 
选项与参数:
-v :启动显示模式,会显示logrotate 运作的过程喔!
-f :不论是否符合,强制每个日志文件都进行rotate 的动作!

# logrotate -v /etc/logrotate.d/logrotate_learn 
reading config file /etc/logrotate.d/logrotate_learn
Allocating hash table for state file, size 15360 B
……

# ll logrotate_learn.log*
-rwx------ 1 www www        0 Nov 12 10:15 logrotate_learn.log
-rwx------ 1 www www 20974585 Nov 12 10:15 logrotate_learn.log.1.gz


Perform rotation management of nginx log files

How to perform rotation management of log files after learning Finally, we now enter the actual combat exercise.

# ll /www/wwwlogs/
total 1852452
-rwx------ 1 www www    350288 Nov 12 02:50 access.log
-rwx------ 1 www www  14016937 Nov 11 22:44 isunshinenet.com.error.log
-rwx------ 1 www www 300416647 Nov 11 22:44 isunshinenet.com.log
-rwx------ 1 www www         0 Sep 30 09:57 nginx_error.log

We need to manage these four log files in rotation. First, create the configuration file.

# 对nginx日志文件进行呢轮替
/www/wwwlogs/access.log
/www/wwwlogs/nginx_error.log
/www/wwwlogs/isunshinenet.com.error.log
/www/wwwlogs/isunshinenet.com.log
{
    missingok
    notifempty
    daily
    rotate 7
    size=1M
    create 0700 www www
    sharedscripts
    postrotate
 if [ -f /www/server/nginx/logs/nginx.pid ];then
    /www/server/nginx/sbin/nginx -s reload  
 fi
    endscript
}

At this point, we have completed the rotation management of nginx logs. The system will detect it by itself every day. When rotation is needed, rotation management will be performed.

The above is the detailed content of Linux operation and maintenance logrotate log rotation - rotate nginx logs. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn