log4j: 如何使用 SocketAppender?

2022-09-02 08:57:31

我有一个关于如何使用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

最重要的是:在哪里\如何查看我的日志?


答案 1

您可以使用以下命令运行服务器

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

接收由远程发送到指定端口号的日志记录事件,并根据您在 中提供的配置记录这些事件,就好像它们是在本地生成的一样。配置相关的控制台/文件/滚动文件追加器并将其附加到相关的记录器取决于您,就像您直接在原始进程中执行日志记录而不是通过网络套接字管道传输日志事件一样。即,如果您当前正在使用以下内容创建本地日志文件:SimpleSocketServerSocketAppenderlog4j-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


答案 2

要启动服务器,请在命令提示符下键入以下命令,服务器将启动并运行:

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

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


推荐