2012-05-02 73 views
2

我們有一些我們在數據庫(mysql)中維護的自定義日誌。我們使用這些日誌來跟蹤我們的Zend框架應用程序中最近發生的錯誤和電子郵件活動。我應該在哪裏存儲自定義php日誌?

最近我們發現這些日誌會在數據庫上產生一些壓力,因爲我們在這些日誌標籤上執行多次讀/寫操作。由於我們需要執行mysql INSERT,這也會減慢應用程序的運行速度,有時這些日誌表會被其他SELECT查詢鎖定。

我們使用Zend_Log適配器執行日誌寫入,因爲這樣:

$columnMapping = array('url' => 'url', 'userAgent' => 'userAgent', 'info' => 'info', 'reffer' => 'reffer', 'userId' => 'userId', 'priority' => 'priority','dateInserted' => 'dateInserted', 'message' => 'message'); 
    $writer_db = new Zend_Log_Writer_Db($db, 'log', $columnMapping); 

我們也有從日誌中的每個夜晚,這也創造了數據庫在某些應激清除舊的條目自定義的cronjob。

我們對這些日誌的唯一要求是它們應該可以從中央位置進行搜索,因爲我們有多個服務器編寫這些日誌。

將日誌寫入zend框架應用程序的任何替代方法?有什麼好的Zend_Log適配器可以在這種情況下提供幫助?

回答

2

您可以將文件記錄器用於通過NTP在所有服務器之間共享的「驅動器」。它可以通過標準的unix搜索工具(grep,awk等)進行搜索。

另一種解決方案是使用接收日誌消息的Syslog寫入器和set up a syslog server。有許多應用程序可以分析syslog格式。

第三個選擇是使用MongoDB作爲日誌的存儲設施。 Here is an article,它解釋瞭如何實現寫入MongoDB的日誌寫入器。 MongoDB具有「異步插入」,因此您的應用程序無需等待日誌條目寫入數據庫。

+1

是的,一個nosql數據庫可能是完美的這些日誌。有趣的文章!謝謝! – aporat

相關問題