2012-05-02 7 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); 

我々はまた、また、データベースにいくつかのストレスを作成するログ毎晩、古いエントリがクリーンアップカスタムcronジョブを持っています。

これらのログに必要な要件は、これらのログを複数のサーバーで作成しているため、中央から検索できるようにすることだけです。

zend frameworkアプリケーションでログを書き込むための代替方法はありますか?この場合に役立つ良いZend_Logアダプターはありますか?

答えて

2

NTP経由ですべてのサーバーで共有される「ドライブ」にファイルロガーを使用できます。これは、標準のUNIX検索ツール(grep、awkなど)で検索可能です。

もう1つの解決策は、Syslogライターとset up a syslog serverを使用してログメッセージを受信することです。 syslog形式を分析できる多くのアプリケーションがあります。

3番目のオプションは、MongoDBをログの格納場所として使用することです。 Here is an articleには、MongoDBに書き込むログライターの実装方法が説明されています。 MongoDBには「非同期挿入」があるため、アプリケーションはログエントリがデータベースに書き込まれるまで待つ必要はありません。

+1

ええ、nosqlデータベースはこれらのログに最適かもしれません。面白い記事!ありがとう! – aporat

関連する問題