1. 系统默认的错误日志配置:
[root@node1 ~]# vim /etc/nginx/nginx.conf
error_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;
2. 系统默认的访问日志配置:
[root@node1 ~]# vim /etc/nginx/nginx.conf
http {
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;
}
3. 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.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 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...] <configfile>
[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,系统会自动生成日志切割的策略。文章来源:https://www.toymoban.com/news/detail-451835.html
## 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的默认切割策略,也可以自己定义切割策略。文章来源地址https://www.toymoban.com/news/detail-451835.html
## 自定义日志切割策略:
[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 -e
00 00 * * * /bin/sh /server/script/nginxlog.sh > /dev/null 2>&1
到了这里,关于Nginx日志配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!