环境:centos 6.6 nginx.1.10.
1、用脚本分割nginx日志
1、用脚本分割nginx日志
#!/bin/bash
savepath_log
=
'/usr/local/nginx/logs'
mkdir
-
p
$savepath_log
/$
(
date
+%
Y
)
/$
(
date
+%
m
)
mv
$savepath_log
/
access
.
log
$savepath_log
/$
(
date
+%
Y
)
/$
(
date
+%
m
)
/
access
-$
(
date
+%
Y
%
m
%
d
)
.
log
mv
$savepath_log
/
error
.
log
$savepath_log
/$
(
date
+%
Y
)
/$
(
date
+%
m
)
/
error
-$
(
date
+%
Y
%
m
%
d
)
.
log
kill
-
USR1 `
cat
/
usr
/
local
/
nginx
/
logs
/
nginx
.
pid`
将这段脚本保存后加入到Linux的crontab守护进程,让此脚本在每天凌晨0点执行,就可以实现日志的每天分割了。
2、 用logrotate切割nginx日志
logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。系统自带的日志切割的配置文件在/etc/logrotate.conf 和 /etc/logrotate.d/syslog 里面,观察一下。
vim /etc/logrotate.d/nginx #创建配置文件
2、 用logrotate切割nginx日志
logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。系统自带的日志切割的配置文件在/etc/logrotate.conf 和 /etc/logrotate.d/syslog 里面,观察一下。
vim /etc/logrotate.d/nginx #创建配置文件
/
usr
/
local
/
nginx
/
logs
/*.
log
{
daily
rotate
10
compress
delaycompress
missingok
notifempty
dateext
sharedscripts
postrotate
kill
-
USR1 `
cat
/
usr
/
local
/
nginx
/
logs
/
nginx.
pid`
endscript
}
/usr/local/nginx/logs/*.log Nginx的日志路径
daily 日志文件按日转储
rotate 一次将存储10个转储日志。对于第11个转储,时间最久的转储会被删除。
compress 对转储日志进行gzip压缩
delaycompress 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的转储日志压缩,压缩将在下一次转储周期进行。这在你或任何软件仍然需要读取最新的转储日志时很有用
missingok 在日志转储期间,任何错误将被忽略,例如文件无法找到
notifempty 如果日志文件为空,转储不会进行
dateext 在文件末尾添加当前日期
sharedscripts 对所有日志文件执行一次脚本
postrotate/endscript 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。
#测试,有生成就代表配置成功
daily 日志文件按日转储
rotate 一次将存储10个转储日志。对于第11个转储,时间最久的转储会被删除。
compress 对转储日志进行gzip压缩
delaycompress 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的转储日志压缩,压缩将在下一次转储周期进行。这在你或任何软件仍然需要读取最新的转储日志时很有用
missingok 在日志转储期间,任何错误将被忽略,例如文件无法找到
notifempty 如果日志文件为空,转储不会进行
dateext 在文件末尾添加当前日期
sharedscripts 对所有日志文件执行一次脚本
postrotate/endscript 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。
#测试,有生成就代表配置成功
logrotate -f /etc/logrotate.d/nginx
最后写入到cron守护进程,每天执行,即可实现日志每天切割了。或将脚本存放到/etc/cron.daily/,如果是在/etc/logrotate.d/中,也会自动执行,原因在/etc/cron.daily/logrotate文件中~
最后写入到cron守护进程,每天执行,即可实现日志每天切割了。或将脚本存放到/etc/cron.daily/,如果是在/etc/logrotate.d/中,也会自动执行,原因在/etc/cron.daily/logrotate文件中~