您可以使用运行服务器
java -classpath log4j.jar org.apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties
根据您提供的配置,SimpleSocketServer
接收远程发送到指定端口号的日志记录事件SocketAppender
,并像在本地生成它们一样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
然后你会改变它,以便发送方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
——通过网络传输的是整个日志事件对象,接收端负责布局。