关于nginx日志网上有很多分割日志的方法,大概原理都是在凌晨自动把日志文件重命名为昨天的日期,然后reload一下nginx。
定时任务的方法也是有优点的,可以在脚本代码中再加一个行,清理30天前的日志文件,这样能达到保留30天日志而不是无限增长占满磁盘空间了。
单从功能实现层面来看,有一个方法可以不分割日志,不安装任何工具就能实现日志按天生成,基本原理就是在nginx配置文件中,把文件名设置成了动态变量,而这个变量就是当天的日期。
server {
listen 80;
server_name xxxxxx;
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
}
access_log /home/public_html/logs/${host}_${year}_${month}_${day}_access.log access;
以上代码便是把日志文件名设置成了动态变量,每天的文件名都是当天,自然就实现了按天生成日志的功能。
在写这个文章的时候特别找了一下,还发现了基于logrotate来设定的,使用上相对复杂一点,但功能强大,如果旧版的系统没有则需要安装一下。
Logrotate 程序是一个日志文件管理工具。用于分割日志文件,压缩转存、删除旧的日志文件,并创建新的日志文件,