6

サードパーティの Java アプリケーションをログ集計/分析ソリューションに接続することを検討しています (おそらく Splunk ですが、まだ選択を確定していません)。Splunk エージェントを syslog にフックするのが最も簡単なように思われるので、アプリケーション ログをサーバー上のローカル syslog デーモンにリダイレクトする方法を探しています。

Java アプリケーションは java.util.logging を使用しますが、残念ながらすぐに使用できる syslog ハンドラーを備えていません (ただし、log4j は備えていると思います)。これを行うための実績のあるライブラリはありますか? ログの負荷はそれほど大きくありません (おそらく各プロセスから 1 分あたり 10 ~ 20 メッセージ、ホストあたり最大 6 プロセス) ですが、信頼性と耐久性が気になります (たとえば、デーモンがダウンするとどうなるか...)。

どんな助けでも大歓迎です...

4

2 に答える 2

8

SLF4Jには、使用できるSLF4J(したがってlog4jまたはlogback)にイベントを渡すためのブリッジがあります。java.util.loggingパフォーマンスコストがかかります(リンクを参照)が、負荷を考えると、これは大したことではありません。したがって、Log4J SyslogAppender(または、より良い後継であるlogbackも使用できます)を使用できますSyslogAppender。私はこのアペンダーの経験がありません(したがって、これにはいくつかのテストが必要になる可能性があります)が、ログバックは間違いなく信頼できるライブラリであり、「nopexception」または「nopex」変換ワードを使用してスタックトレースを出力しないように構成できることを知っています(デーモンがダウンしているときにメッセージを送信すると、例外が発生します)。このアペンダーを別のアペンダー(ファイルベースなど)と結合すると、メッセージが失われることはありません。

于 2010-02-22T16:44:27.400 に答える
4

私たちのプロジェクトは java.util.Logging メカニズムも使用しているため、syslog プロトコルの準備が整った Handler 実装を見つけるために時間を費やした後、最終的に RFC 3164 を読み、独自の実装http://code.google.com/を作成しました。 p/agafua-syslog/

UDP トランスポートと TCP トランスポートの両方で、本番環境で使用しています。この場合、ログ メッセージのフローは 1 秒あたり約 1 ~ 2 msg であるため、おそらくニーズに当てはまると思います。

于 2012-10-07T20:26:48.573 に答える