nginx默认没有提供对日志文件的分割功能,所以随着时间的增长,access.log
和error.log
文件会越来越大,尤其是access.log
,其日志记录量比较大,更容易增长文件大小,影响日志写入性能
分割nginx日志的方法有很多,这里推荐利用Logrotate
来完成
Logrotate用法
1.安装
logrotate是一个linux系统日志的管理工具。可以对单个日志文件或者某个目录下的文件按时间/大小进行切割,压缩操作;指定日志保存数量;还可以在切割之后运行自定义命令
logrotate是基于crontab运行的,所以这个时间点是由crontab控制的,具体可以查询crontab的配置文件/etc/anacrontab。系统会按照计划的频率运行logrotate,通常是每天。在大多数的Linux发行版本上,计划每天运行的脚本位于/etc/cron.daily/logrotate
主流Linux发行版上都默认安装有logrotate包,如果你的linux系统中找不到logrotate, 可以使用apt-get或yum命令来安装
yum install -y logrotate
一般linux都已经自带logrotate,下列命令可以查看是否已安装
rpm -ql logrotate
2.基本用法详解
2.1 入门
/etc/logrotate.conf
这个文件是logrotate的主配置文件
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# 包含自定义配置目录
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
这个主配置文件中定义了日志文件分割的通用参数。并且include /etc/logrotate.d
表示其会加载/etc/logrotate.d
的所有自定义配置文件,自定义配置文件中的配置可以覆盖掉通用配置
我们来到自定义配置文件的目录/etc/logrotate.d
尝试在该目录中创建一个日志分割配置test,对/opt/logtest
目录中所有以.log
结尾的文件进行分割
vim test
# test配置文件的内容
/opt/logtest/*.log {
daily
rotate 2
copytruncate
missingok
}
test配置的第一行指定要对哪个路径的哪些文件进行分割,然后携带的4个参数解释如下:
daily
:按天切割。触发切割时如果时间不到一天不会执行切割。除了daily,还可以选monthly,weekly,yearly