log4j:如何使用SocketAppender?

我有一个关于如何使用SocketAppender(我需要它从分布式系统收集日志)的答案 ,但我是新的log4j,我不知道如何使用该示例代码。

可能我应该有这样的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 \如何查看我的日志?

您可以使用运行服务器

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

SimpleSocketServer根据您在log4j-server.properties提供的configuration,接收由远程SocketAppender发送到指定端口号的日志事件,并将它们logging为在本地生成 。 您需要configuration相关的控制台/文件/滚动文件appender,并将它们附加到相关的日志logging程序,就像直接在原始进程中进行日志logging一样,而不是通过networking套接字来pipe理日志事件。 也就是说,如果您正在创build本地日志文件,如下所示:

 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 

特别要注意的是,在发送端的SocketAppender上没有指定布局的点 – networking上的事情是整个日志logging事件对象,接收方负责进行布局。

要在命令提示符下启动服务器简单types命令,服务器将启动并运行:

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

请不要忘记在系统中指定正确的log4j.jarpath。