nginx 直接在配置文章中设置日志分割
2024-08-22 22:58:14
直接在nginx配置文件中,配置日志循环,而不需使用logrotate或配置cron任务。需要使用到$time_iso8601 内嵌变量来获取时间。$time_iso8601格式如下:2015-08-07T18:12:02+02:00。然后使用正则表达式来获取所需时间的数 据。
按天分割日志
使用下面的代码块
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
} access_log /data/logs/nginx/upchina.com-$year-$month-$day-access.log;
也可以使用Perl语法来捕获,如下:
if ($time_iso8601 ~ "^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})") {} access_log /data/logs/nginx/upchina.com-$year-$month-$day-access.log;
按时、分、秒分割
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;
}
非常方便的进行日志分割。建议按小时分割日志,方便分析查询日志。
使用logrotate+crontab进行日志切割
nginx日志默认情况下统统写入到一个文件中,文件会变的越来越大,非常不方便查看分析。以日期来作为日志的切割是比较好的,通常我们是以每日来做统计的。下面来说说nginx日志切割。
1. 定义日志轮滚策略
# vim nginx-log-rotate
/data/weblogs/*.log {
nocompress
daily
copytruncate
create
notifempty
rotate 7
olddir /data/weblogs/old_log
missingok
dateext
postrotate
/bin/kill -HUP `cat /var/run/nginx.pid 2> /dev/null` 2> /dev/null || true
endscript
}
[warning]/data/weblogs/*.log使用通配符时,/data/weblogs/目录下的所有匹配到的日志文件都将切割。如果要切割特定日志文件,就指定到该文件。[/warning]
2. 设置计划任务
59 23 * * * root ( /usr/sbin/logrotate -f /PATH/TO/nginx-log-rotate)
这样每天23点59分钟执行日志切割。
最新文章
- ES5基础之正则表达式01:初次见面
- public private, protect. 以及继承。 草稿。
- mysql 锁优化
- 跨域请求 &; jsonp
- inputs
- Android开发代码规范
- css开发经验&;错误习惯
- php:根据中文裁减字符串函数方法
- 获取调用者Class和method、反射获取get方法、获取注解信息
- MySQL XtraBackup备份脚本
- YUM 安装及清理
- MYBATIS 简单整理与回顾
- JavaEE 藏经阁
- Windows 2008 asp.net 配置
- 【XSY2332】Randomized Binary Search Tree 概率DP FFT
- FileUpload1.PostedFile.FileName 获取的文件名
- Maven中classifier
- redis哨兵模式,数据尽量少的丢失
- directive例子1
- 【C++程序员学 python】python 的文件类型