Sockets Log4cplus:SocketAppender日志服务器

Sockets Log4cplus:SocketAppender日志服务器,sockets,server,log4cplus,Sockets,Server,Log4cplus,我希望更好地了解Log4cplus SocketAppender在接收此appender事件的日志服务器上的工作方式 我阅读了loggingserver和socketappender的Log4cplus src代码,我很高兴得到澄清: SocketAppender是否只能将事件发送到Log4cplus日志服务器,而不能发送到任何其他服务器? 如果是这样的话:这是否意味着如果我想向远程机器发送日志消息,该机器必须安装Log4cplus库 我还想知道-这个Log4cplus日志服务器是否作为服务运行

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

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

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

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

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

是的,是的

这是否意味着若我想向远程机器发送日志消息,那个机器必须安装Log4cplus库

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

我还想知道-这个Log4cplus日志服务器是否作为服务运行

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

它是否需要特殊配置和预设置才能使用


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

我只是想分享我是如何使用的(此设置也适用于同一网络中的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
在我使用的第二个容器中:

  • apk添加系统日志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
来检查它