从nginx访问日志中获取最近10分钟的日志

从nginx访问日志中获取最近10分钟的日志

我想过滤Ubuntu 16.04上Nginx的access.log文件中最近10分钟写入的日志。我尝试使用以下行,但仅过滤该分钟的日志。

awk -v d1="$(date --date="-10 min" "+%d/%b/%Y:%H:%M")" -v d2="$(date "+%d/%b/%Y:%H:%M")" '$0 > d1 && $0 < d2 || $0 ~ d2' /usr/local/nginx/logs/access.log

这是写入日志的日期格式:
12/Apr/2018:12:49:03
任何帮助将不胜感激。

答案1

问题是 nginx 日志在文件开头没有日期:考虑到这一点,你就得到了这个(我的是该行的第五个元素,请注意$4

sudo awk -v d1="$(date --date '-10 min' '+%d/%b/%Y:%T')" '$4 > d1' /var/log/nginx/access.log

那么问题又是在开头有不相关的方括号:

因此,删除方括号可以让您获得一些功能:

sudo awk -v d1="$(date --date '-10 min' '+%d/%b/%Y:%T')" '{gsub(/^[\[\t]+/, "", $4);}; $4 > d1' /var/log/nginx/access.log

我已经稍微简化了示例来演示该问题,但如果您愿意,您可以随时添加回上限检查。

相关内容