Nginx日志配置

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,系统会自动生成日志切割的策略

## 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 -e

00 00 * * * /bin/sh /server/script/nginxlog.sh > /dev/null 2>&1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值