Home > Article > Operation and Maintenance > Linux operation and maintenance logrotate log rotation - rotate nginx logs
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!