2012-01-30 20 views
6

私はSLF4Jのロギングに関していくつかの提案が必要です。ファイルへのSLF4Jのログ対DB対Solr

現在のところ、単純なConsoleAppenderを使用するJava WebアプリケーションのSLF4Jロギング(log4jバインディング)を使用しています。次のステップは、ログを保存できる場所を調べることです。

我々のアプリは1日あたり約100,000件のメッセージを処理します。各メッセージは約60〜100行のログを生成します。私たちの目標は、(messageIdを使って)失敗したメッセージをすばやく検索して見つけ出し、失敗の原因を特定できるようにすることです。

私の質問です:私たちのログを保存するのに適した場所で、次のどの:

  • ファイル(複数可)
  • DB
  • Solrの

感謝。

答えて

11

log4jから切り替え、slf4j APIのlogback実装を使用することを検討してください。 ログバックにはappendersという広範なリストがあります。

おそらくあなたの質問はログを検索可能にすることに関するものだと思います。答えはあなたが探しているものによって決まります。

  • 単純なアプリケーションのために私はちょうどローリングファイルアペンダを使用して、私が興味を持ってるのメッセージのためにこれをgrepする。
  • より複雑なアプリケーションでは、さらにデータベースにメッセージを記録します。
  • 現在のところ、log4jとログバックに使用できるSol appenderはありません。しかし、solrj APIを使用して書くのは簡単です
  • ログメッセージを監視するには、ログメッセージのリモートGUIであるlilithがあります。 スケールの程度はよくわかりませんが、デモや簡単な監視では面白いことです。

更新

logbackのためGraylog2 appenderもあるセバスチャンによって示唆されるように。もちろんMavenの中央で使用できるようになりまし

<dependency> 
    <groupId>me.moocar</groupId> 
    <artifactId>logback-gelf</artifactId> 
    <version>0.9.6p2</version> 
</dependency> 

このインストールgraylog2サーバーを持つに依存します。

+1

Graylogもありますが、私はそれが非常にうまくスケールするとは思わない。 –

+0

検索は簡単です:messageId + "some search term"私はlogback + DBオプションを研究します。 – scabbage

0

サーブレット仕様には、ログを保存するためのファイルシステムの場所を提供する機能はありません。

したがって、最も堅牢で長期的な解決策は、単にjava.util.logging(slf4jバインディングを使用)を使用して、Webコンテナに生成されたログを処理させることです。

ログエントリは約1,000万件あります。つまり、リソースの使用に注意する必要があります。データベース通信はファイルアクセスよりもはるかに高価です。私は、フラットファイルを夜間にバックアップする以外は何かを検討する必要のあるパフォーマンスを得ることができるかどうかを確認する方法をプロファイルすることをお勧めします。

関連する問題