我有一个answer关于如何使用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
最重要的是什么: 哪里\我怎样才能看到我的日志?
答案 0 :(得分:45)
您可以使用
运行服务器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
特别要注意的是,在发送端的SocketAppender
上指定布局是没有意义的 - 网络上的内容是整个日志记录事件对象,它是负责进行布局的接收方。
答案 1 :(得分:0)
要在命令提示符下启动服务器simple type below命令,服务器将启动并运行:
java -classpath C:Users.m2repositorylog4jlog4j1.2.17log4j-1.2.17.jar org.apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties
请不要忘记在系统中指定log4j.jar的正确路径。