Nginx日志按天分割

Nginx日志分割

Centos7.6


1-问题

日志文件持续增大

nginx会按照nginx.conf的配置生成access.log和error.log
随着访问量的增长,日志文件会越来越大,既会影响访问的速度(写入日志时间延长),也会增加查找日志的难度

查看日志

[root@Ngnix-test ~]# cd /opt/apps/nginx/logs/
[root@Ngnix-test logs]# ll -h
total 9.1G
-rw-r--r-- 1 root root 8.9G Jan 26 11:01 access.log
-rw-r--r-- 1 root root  37M Jan 26 11:14 error.log
-rw-r--r-- 1 root root    6 Jan 26 10:45 nginx.pid

2-map方式

Nginx内部配置设置日志文件格式

需要使用到 timeiso8601内嵌变量来获取时间,time_iso8601 内嵌变量来获取时间
time_iso8601格式如下:2018-09-21T16:01:02+02:00。然后使用正则表达式来获取所需时间的数据

按天分割日志

#配置在server段
注意层次关系,这段脚本一定要加到server配置内部,且if要在access_log前面,否则set的变量将无法引用

#编辑nginx配置文件
[root@Ngnix-test logs]# vim /opt/apps/nginx/conf/nginx.conf
#在server内添加以下内容
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
        set $year $1;
        set $month $2;
        set $day $3;
}
 access_log  /opt/apps/nginx/logs/access_$year-$month-$day.log  main;

#注:/opt/apps/nginx/logs是nginx日志路径

在这里插入图片描述>重启nginx

[root@Ngnix-test logs]# /opt/apps/nginx/sbin/nginx -s reload

查看日志

[root@Ngnix-test logs]# ll -h
total 9.1G
-rw-r--r-- 1 root root  12M Jan 26 11:23 access_2024-01-26.log
-rw-r--r-- 1 root root 8.9G Jan 26 11:01 access.log
-rw-r--r-- 1 root root  37M Jan 26 11:23 error.log
-rw-r--r-- 1 root root    6 Jan 26 10:45 nginx.pid

#按天分割的日志已生成,原access.log可以删除

3-定时任务

防止nginx文件过多,可以删除超过7天的nginx文件

[root@Ngnix-test logs]# crontab -e
#每天凌晨1点删除nginx超过10天的日志
* 1 * * * find /opt/apps/nginx/logs -name "access_2024*.log" -type f -mtime +10 -exec rm -f {} \;

4-按小时分割

在必要的时候可以按小时分割,方便日志分析


if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})")
{
    set $year $1;
    set $month $2;
    set $day $3;
    set $hour $4;
    set $minutes $5;
    set $seconds $6;
}
access_log  /opt/apps/nginx/logs/access_$year-$month-$day-hour-minutes-seconds.log  main;
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值