系统默认的错误日志配置:
[root@node1 ~]# vim /etc/nginx/nginx.conferror_log /usr/local/nginx/logs/error.log;error_log /usr/local/nginx/logs/error.log notice;error_log /usr/local/nginx/logs/error.log info;
系统默认的访问日志配置:
[root@node1 ~]# vim /etc/nginx/nginx.confhttp { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /usr/local/nginx/logs/access.log main;}
nginx日志切割:
1>. 日志管理工具logrotate:在linux上logrotate是一个日志文件管理工具。用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到“转储”作用,它是默认随linux一起被安装的。
Logrotate是基于CRON来运行的,其脚本是/etc/cron.daily/logrotate,内容如下:
[root@node2 ~]# vim /etc/cron.daily/logrotate#!/bin/sh/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.confEXITVALUE=$?if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"fiexit 0
2>. 日志轮询周期:daily、weekly、monthly、yearly 。
默认是daily(即logrotate脚本放到了/etc/cron.daily下),具体执行时间可以查看 /etc/crontab 或者 /etc/anacrontab。
注意: logrotate是基于crontab运行的, 所以这个时间点是有crontab控制的, 具体可以查询crontab的配置文件/etc/anacrontab.。系统会按照计划的频率运行logrotate,通常是每天。
3>. 强制执行:如果等不及cron自动执行日志轮转,可以强制切割日志。
语法:[root@node2 ~]# logrotate [OPTION...] [root@node2 ~]# logrotate -f /etc/logrotate.d/nginx-d, --debug :debug模式,测试配置文件是否有错误,不真实执行。-f, --force :强制转储文件。-m, --mail=command :压缩日志后,发送日志到指定邮箱。-s, --state=statefile :使用指定的状态文件。-v, --verbose :显示转储过程。
logrotate默认的日志在: /var/lib/logrotate/logrotate.status中。
4>. logrotate配置:使用rpm包安装的nginx,系统会自动生成日志切割的策略。
## rpm包安装的nginx系统默认的日志切割策略:[root@node2 ~]# cd /etc/logrotate.d/[root@node2 logrotate.d]# vim nginx /var/log/nginx/*.log { ##日志文件位置 create 0640(mode) nginx(owner) root(group) ##转储文件,使用该模式创建日志文件 daily ##日志轮询周期,weekly,monthly,yearly rotate 10 ##保存30天数据,超过的则删除 missingok ##如果没有日志文件也不报错 notifempty ##日志为空时不进行切换,默认为ifempty compress ##切割后压缩,也可以为nocompress delaycompress ##切割时对上次的日志文件进行压缩 sharedscripts ##所有的文件切割之后只执行一次下面脚本 postrotate /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true endscript}
而使用源码安装的nginx,系统不会默认生成日志切割策略,可以复制rpm的默认切割策略,也可以自己定义切割策略。
## 自定义日志切割策略:[root@node1 ~]# mkdir -p /server/script/[root@node1 ~]# cd /server/script/[root@node1 script]# vim nginxlog.sh #!/bin/sh Dateformat=`date +%Y%m%d`Basedir="/usr/local/nginx"Nginxlogdir="$Basedir/logs"Logname="access"[ -d $Nginxlogdir ] && cd $Nginxlogdir || exit 1[ -f ${Logname}.log ] || exit 1/bin/mv ${Logname}.log ${Dateformat}_${Logname}.log/usr/sbin/nginx -s reload## 添加执行权限:[root@node1 script]# chmod +x nginxlog.sh ## 创建计划任务:[root@node1 script]# crontab -e00 00 * * * /bin/sh /server/script/nginxlog.sh > /dev/null 2>&1
来源地址:https://blog.csdn.net/NancyLCL/article/details/127290157