2012-08-01 27 views
19

我有一個answer關於如何使用SocketAppender(我需要它從分佈式系統中收集日誌),但我是log4j的新手,我不知道如何使用該示例代碼。log4j:如何使用SocketAppender?

也許我應該有這樣的log4j-server.properties:

log4j.appender.SERVER=org.apache.log4j.net.SocketAppender 
log4j.appender.SA.Port=4712 
log4j.appender.SA.RemoteHost=loghost 
log4j.appender.SA.ReconnectionDelay=10000 

但我仍然不知道如何啓動服務器(如何使用這條線)

org.apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties

什麼是最重要的: Where \如何查看我的日誌?

+0

這些被稱爲命令行參數。 – Woot4Moo 2012-08-01 12:48:48

回答

41

您可以運行使用服務器

java -classpath log4j.jar org.apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties 

SimpleSocketServer接收登錄遠程SocketAppender發送到指定端口號的事件,並記錄他們,好像他們是本地產生,根據配置不同,供應log4j-server.properties。您需要配置相關的控制檯/文件/滾動文件appender,並將它們附加到相關的日誌記錄程序,就像直接在原始進程中執行日誌記錄一樣,而不是通過網絡套接字管理日誌事件。即如果你目前正在製作的東西,如本地日誌文件:

log4j.rootLogger=DEBUG, file 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=logfile.log 
log4j.appender.file.MaxFileSize=1MB 
log4j.appender.file.MaxBackupIndex=1 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=[%d] [%t] [%m]%n 

然後讓發送方log4j.properties只是說

log4j.rootLogger=DEBUG, server 
log4j.appender.server=org.apache.log4j.net.SocketAppender 
log4j.appender.server.Port=4712 
log4j.appender.server.RemoteHost=loghost 
log4j.appender.server.ReconnectionDelay=10000 

和服務器端log4j-server.properties包含的定義,你要改變它是之前在發送方:

log4j.rootLogger=DEBUG, file 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=logfile.log 
log4j.appender.file.MaxFileSize=1MB 
log4j.appender.file.MaxBackupIndex=1 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=[%d] [%t] [%m]%n 

特別是,請注意,沒有指定上的佈局的點發送端的- 網絡上發生的事情是整個日誌記錄事件對象,接收方負責進行佈局。

+0

非常感謝,它工作:)但我仍然有一個問題。現在我得到''[2012-08-01 15:20:39,950] [main] [連接到客戶端在/127.0.0.1] [2012-08-01 15:20:39,950] [main] [啓動新的套接字節點。] [2012-08-01 15:20:39,950] [main] [等待接受新的客戶端。]'我應該怎麼做才能避免登錄? – alicjasalamon 2012-08-01 13:23:59

+1

這些看起來像由套接字服務器本身生成的消息。你必須稍微改進你的日誌配置。根據這些額外消息的級別,將服務器端根記錄器設置爲ERROR而不是DEBUG,然後添加'log4j.logger.com.example = DEBUG'或任何適合您的發送方的記錄器記錄到。 – 2012-08-01 13:31:19

+0

對Log4J 2的支持如何? – Donatello 2018-01-23 15:08:16

0

要命令提示啓動服務器簡單類型下面的命令和服務器將和運行:

的java -classpath C:Users.m2repositorylog4jlog4j1.2.17log4j-1.2.17.jar org.apache。 log4j.net.SimpleSocketServer 4712 log4j-server.properties

請不要忘記在系統中指定正確的log4j.jar路徑。