log4j:如何使用SocketAppender? [英] log4j: How to use SocketAppender?

查看:148
本文介绍了log4j:如何使用SocketAppender?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I've got an answer about how to use SocketAppender (I need it to gather logs from distributed system), but I am new to log4j and I have no idea how to use that sample code.

可能我应该有log4j这样的-server.properties:

Probably I should have log4j-server.properties like that:

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

但我仍然不知道如何启动服务器(如何使用此行)

But I still don't know how to start the server (how to use this line)

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

最重要的是:
Where \我如何看到我的日志?

And what is the most important: Where\How can I see my logs?

推荐答案

您可以使用

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

SimpleSocketServer 接收远程 SocketAppender 发送到指定端口号的日志记录事件,并将它们记录为,就像它们是在本地生成的一样 ,根据您在 log4j-server.properties 中提供的配置。由您来配置相关的控制台/文件/滚动文件追加器并将它们附加到相关的记录器,就像您在原始过程中直接进行日志记录而不是通过网络套接字管道日志事件一样。即如果您当前正在使用以下内容创建本地日志文件:

The SimpleSocketServer receives logging events sent to the specified port number by the remote SocketAppender, and logs them as if they were generated locally, according to the configuration you supply in log4j-server.properties. It's up to you to configure the relevant console/file/rolling file appenders and attach them to the relevant loggers just as you would if you were doing the logging directly in the original process rather than piping the log events over a network socket. I.e. if you're currently creating local log files with something like:

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 简单地说

then you would change it so that the sending side log4j.properties simply says

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 包含定义以前在发送方面:

and the server-side log4j-server.properties contains the definitions that were previously on the sending side:

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 上的布局没有意义 - 网络上的内容是整个日志事件对象,它是接收方负责做布局。

In particular, note that there's no point specifying a layout on the SocketAppender on the sending side - what goes over the network is the whole logging event object, it's the receiving side that is responsible for doing the layout.

这篇关于log4j:如何使用SocketAppender?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆