Log4cplus:SocketAppender日志服务器



我希望更好地了解Log4cplus SocketAppender在接收此appender事件的日志服务器方面的工作方式。

我阅读了loggingserver和socketappender的Log4cplus src代码,我很高兴得到澄清:

SocketAppender是否只能将事件发送到Log4cplus日志服务器,而不能发送到任何其他服务器?如果是这样的话:这是否意味着如果我想向远程机器发送日志消息,那么该机器必须安装Log4cplus lib?

我还想知道,这个Log4cplus日志服务器是作为服务运行的吗?它需要特殊的配置和预设置才能使用吗?

SocketAppender是否只能将事件发送到Log4cplus日志服务器,而不能发送到任何其他服务器?

是和是。

这是否意味着如果我想向远程机器发送日志消息,那么该机器必须安装Log4cplus lib?

嗯,有点。如果只想使用SocketAppender,则必须使用日志服务器。您也可以使用SysLogAppender并使用它发送到远程服务器。显然,您必须有syslog服务,并允许在其中从网络接收。您还可以编写自己的自定义appender,将事件发送到您想要的任何服务器。

我也想知道-这个Log4cplus日志服务器是作为服务运行的吗?

不,它是一个在套接字上侦听的简单可执行文件。

它需要特殊配置和预设置才能使用吗?

它需要配置文件,以便知道在哪里记录事件。

我只是想分享一下我是如何使用SocketAppender的(这个设置也适用于同一网络中的docker容器(。

/usr/share/elasticsearch/config/log4j2.properties

status = error
appender.console.type = Console
appender.console.name = console
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%m%n
appender.socket.type=Socket
appender.socket.name=socket
appender.socket.port=601
appender.socket.host=api
appender.socket.reconnectDelayMillis=10000
appender.socket.layout.type = PatternLayout
appender.socket.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%m%n
rootLogger.level = info
rootLogger.appenderRef.console.ref = console
rootLogger.appenderRef.socket.ref = socket

在第二个容器中,我使用了syslog ng:

  • apk add syslog-ng
  • vi /etc/syslog-ng/syslog-ng.conf
  • syslog-ng -f /etc/syslog-ng/syslog-ng.conf

/etc/syslog ng/syslog ng.conf

@version: 3.13
source s_network {
network(
transport(tcp)
port(601)
);
};
log {
source(s_network);
destination(d_network);
};
destination d_network {
file("/var/log/es_slowlog.log", template("${MSGHDR}${MESSAGE}n"));
};

请注意,@version:必须与您的syslog-ng版本相对应。您可以通过调用syslog-ng -V进行检查。

最新更新