分散システムにログコンポーネントを追加しようとしています。チェーンの現在のソースコードを避けるために、AspectJ
に書かれています。私はソケットアペンダーを使用してログを送信しますが、もっと効果的なものを試してみたいと思います。どのAppenderが分散システムで使用されるべきですか?それらを設定するには?
私はJMSAppender
とAsyncAppender
を使うべきだと聞いたことがありますが、設定に失敗しました。ログを収集してデータベースとGUIに渡すReceiver
を作成する必要がありますか(私はChainSaw
を使用します)?
私はturorial1とtutorial2に従おうとしましたが、十分明確ではありません。
編集:私はソケットアペンダを使用して、要求(3つのコンポーネントのシミュレーション)
[2012-08-08 15:40:28,957] [request1344433228957] [Component_A] [start]
[2012-08-08 15:40:32,050] [request1344433228957] [Component_B] [start]
[2012-08-08 15:40:32,113] [request1344433228957] [Component_C] [start]
[2012-08-08 15:40:32,113] [request1344433228957] [Component_C] [end - throwing]
[2012-08-08 15:40:32,144] [request1344433228957] [Component_B] [end]
[2012-08-08 15:40:32,175] [request1344433228957] [Component_A] [end]
のための6つのログを送っ用意しました小さなデモで
。だから私のlog4j.propertiesは次のとおりです。
log4j.rootLogger=DEBUG, server
log4j.appender.server=org.apache.log4j.net.SocketAppender
log4j.appender.server.Port=4712
log4j.appender.server.RemoteHost=localhost
log4j.appender.server.ReconnectionDelay=1000
ので、私はその後、私は、ファイルからチェーンソーに自分のログを送信する設定
log4j.rootLogger=DEBUG, CA, FA
#
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=[%d] [%t] [%c] [%m]%n
#
log4j.appender.FA=org.apache.log4j.FileAppender
log4j.appender.FA.File=report.log
log4j.appender.FA.layout=org.apache.log4j.PatternLayout
log4j.appender.FA.layout.ConversionPattern=[%d] [%t] [%c] [%m]%n
で
>java -classpath log4j-1.2.17.jar org.apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties
を実行します。
をそれは絶対に基本的ですが、私はそれをより良くする方法を学びたいと思います。まず第一に、ログを非同期で送信したいと思います。次に非常に単純なReceiverを作成します。ログをファイルに渡すことができます。
上記のチュートリアルに従おうとしましたが、失敗しました。ですから、あなたはいくつかの設定例を提供することができますか? Receiver.java
とlog4.properties
ファイルの例?
マシン名ではなく、要求の種類ごとにログを別のファイルに分割する必要があります。出来ますか? – alicjasalamon
これはほぼリアルタイムで行う必要がありますか、または夜間に処理することはできますか?要求ごとのファイルは非常に非効率的です。時間に敏感な何かをしているなら、私はlog4jを使用しません。 ;) –
私の考えは:メッセージはJMSアペンダーによって非同期に 'Receiver'に送られました。 「Receiver」は、長時間のリクエストまたは50グループのリクエストを1つ選択し、ChainSawおよびデータベースに渡します。私はこの状況でlog4jを使うべきではありませんか?私は**簡単な**解決策を探しています – alicjasalamon