2012-09-21 36 views
2

我有一些不願透露的Apache錯誤日誌,我想解析並獲取唯一性錯誤。解析Apache錯誤日誌以獲取唯一錯誤

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

我想我只是想「PHP致命」一節砍線,丟棄上半年通過uniq的運行下半場。我的目標是確定所有錯誤,但由於存在許多重複的錯誤,因此需要手動查看每條錯誤的行數太多。

完成此操作的最佳方法是什麼?

回答

2

嘗試grep -o '\[error\].*$' file | sort | uniq

這將只顯示匹配正則表達式(而不是整個含有匹配行),這件事。

然後排序放置similair條目彼此相鄰,以便uniq可以確保沒有重複。

如果要刪除排序/ uniq'ing之前在客戶機位,用 grep -o '\[error\].*$' file | sed 's/\[client.*\?\]//' | sort | uniq

0

隨着SED:

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

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

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

這將

  1. 在每條線的開始處截取日期,例如:

    [28-Aug-2012 11:20:24 UTC] PHP注意:未定義索引:測試/ var/www/... on line。 ..

  2. 計數獨特的行

  3. 由發生排序他們

來源:strictcoder.blogspot.de


如果你創建新的日誌,你可以預先配置PHP:

在php.ini中設置ignore-repeated-errors= On或添加ini_set('ignore-repeated-errors', 1);到您的PHP腳本

這將從記錄錯誤超過停止PHP一次即在相同腳本中由同一行引起的錯誤消息。

來源:php error log, how to remove the duplicates/find unique errors

(但在分析現有日誌本doesen'i幫助)