我想將日誌記錄組件添加到分佈式系統。它被寫入AspectJ
以避免鏈接當前的源代碼。我使用套接字appender發送日誌,但我想嘗試一些更有效的方法。哪些Appender應該用於分佈式系統?如何配置它們?
我聽說我應該使用JMSAppender
和AsyncAppender
,但我沒有配置它。我應該創建Receiver
哪些收集日誌並將它們傳遞到數據庫和GUI(我使用ChainSaw
)?
我試圖按照turorial1和tutorial2,但他們不夠清楚。
編輯:
在一個小的演示我準備我送6個日誌的請求(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]
使用插座追加程序。所以我的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
所以我跑
>java -classpath log4j-1.2.17.jar org.apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties
與配置
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
然後,我把我的日誌從文件到電鋸:
這是絕對基本的,但我想學習如何更好地做到這一點。首先,我想異步發送日誌。然後創建非常簡單的Receiver,例如可以將日誌傳遞給文件。
我試圖按照上面列出的教程,但我失敗了。所以問題是:你能否提供一些配置示例? Receiver.java
和log4.properties
文件的示例?
我需要根據請求類型將日誌分割爲不同的文件,而不是機器名稱。可能嗎? – alicjasalamon 2012-08-08 11:26:53
你是否需要近乎實時地做到這一點,或者是否可以在夜間進行處理?每個請求的文件可能非常低效。如果你對時間敏感,我不會以任何方式使用log4j。 ;) – 2012-08-08 11:33:56
我的想法是:消息由JMS appender異步發送到'Receiver'。 Receiver在50組中選擇最長的請求或一個請求,然後將它們傳遞給ChainSaw和數據庫。在這種情況下我應該使用log4j嗎?我正在尋找** easy **解決方案 – alicjasalamon 2012-08-08 11:43:25