2016-03-16 31 views
0


我有web服務器多種Web應用程序運行(PHP)到文件。配置的設置方式是,在午夜刪除php error_log(所以文件只能持續24小時)。猛砸grep的PHP是error_log致命錯誤通過過濾

的事情是,我想所有的致命錯誤登錄到另一個文件或數據庫中,但只對特定的Web應用程序。 (大約有20次跑步,其中4次是我的)。

我在考慮創建一個bash腳本,在我的應用程序的「致命」和url上擦寫error_log文件,將輸出提取到文件中,並記住當前error_log在單獨緩存文件中的最後一行號。

我會然後把腳本cron和執行它每隔幾分鐘(起始於先前運行的最後一行)。

整個想法是有點搞砸了,我認爲這可以有效地寫,任何想法?

+0

'<?PHP的ini_set( 「error_log中」, 「/路徑/到/你/日誌/文件」);?>' – miken32

+0

,將需要在每一個應用程序,這是一個不好的做法,被插入。 – falnyr

+0

這是一個比這個基於cron的文本處理更加乾淨的地獄,你正試圖完成。我以爲你只是想爲幾個應用程序。如果你不想在你的PHP代碼中,把它放在'.htaccess'文件中。 'php_value error_log「/ path/to/your/log/file」這個設置是有原因的,不要因爲不使用而使你的生活變得複雜! – miken32

回答

1

如果你不能配置這個開箱即用,寫一個cron作業似乎可以。我不太瞭解PHP。在java中,例如您可以根據條件將相同的日誌消息轉到多個日誌文件。

但我有你的cron作業做致命錯誤的同時收集和「最後一天的」日誌文件的刪除。通過這種方式,您可以在午夜單獨運行此腳本,並且可以節省上一次結束時間(以及錯過午夜前發生的錯誤的機會)的複雜性。如果集合正常,請刪除舊文件,否則將其留作診斷並重試。它可以節省您對腳本的一堆(24 * 60)調用。

+0

刪除文件的cronjob由系統管理員設置(不幸的是我無法使用)。 – falnyr

+0

然後恕我直言,最簡單的方法是讓你的cronjob在刪除作業之前運行一分鐘,並立即處理整個文件,而不是每隔幾分鐘查看一次「重新啓動點」。再一次,你將失去致命錯誤的最後一刻,但如果你不能干涉刪除工作,那麼沒有辦法。 – geert3

+0

問題是我需要幾乎實時地查看錯誤。這就是爲什麼我決定每隔幾分鐘就會觸發一次cronjob。 – falnyr