解析Apache的错误日志中唯一的错误(Parsing Apache Error Logs For

2019-09-22 17:27发布

我有一些不守规矩的Apache的错误日志,我想通过解析并获得独特的错误。

[Fri Sep 21 06:54:24 2012] [error] [client xxx.xxx.xxx.xxx ] PHP Fatal error: <error message>, referrer: <url>

我想,我只是想“PHP致命”一节砍线,丢弃上半年通过uniq的运行下半场。 我的目标是找出所有的错误,但有太多的线通过每个手动看,由于对许多重复的错误。

什么是实现这一目标的最佳方式是什么?

Answer 1:

尝试grep -o '\[error\].*$' file | sort | uniq grep -o '\[error\].*$' file | sort | uniq

这将只显示匹配正则表达式(而不是整个含有匹配行),这件事。

然后把排序项similair彼此相邻,这样的uniq可以确保有没有重复。

如果你想排序/ uniq'ing之前删除客户端位,使用grep -o '\[error\].*$' file | sed 's/\[client.*\?\]//' | sort | uniq grep -o '\[error\].*$' file | sed 's/\[client.*\?\]//' | sort | uniq



Answer 2:

分析/var/log/apache2/error.log使用

sed 's^\[.*\]^^g' /var/log/apache2/error.log | uniq -c | sort -n

这将

  1. 切断像每行的开始日期:

    [28 - 8 - 2012 11时20分24秒UTC] PHP说明:未定义指数:测试在/ var / WWW / ...上线...

  2. 算唯一的行

  3. 按发生对它们进行排序

来源: strictcoder.blogspot.de


如果你创建新的日志,你可以预先配置PHP:

设置ignore-repeated-errors = On在php.ini或添加ini_set('ignore-repeated-errors', 1); 你的PHP脚本

这将大于由在同一个脚本同一行一次即错误信息记录错误的更多停止PHP。

来源: PHP错误日志,如何删除重复/找到独特的错误

(但在分析现有日志本doesen'i帮助)



Answer 3:

使用sed:

sed -r 's/(.*)(PHP Fatal error)/\2/' logfile | sort -u


Answer 4:

正则表达式解析字符串可能ERROR.* (测试它regex101.com)

以下命令将确保它搜索不区分大小写

grep -ori 'ERROR.*$' filename | sort | uniq


文章来源: Parsing Apache Error Logs For Unique Errors