Log4cplus:SocketAppender 日志服务器
Log4cplus: SocketAppender logging server
我希望更好地了解 Log4cplus SocketAppender 在接收此附加程序事件的日志服务器方面的工作方式。
我阅读了 loggingserver 和 socketappender 的 Log4cplus src 代码,我很乐意得到澄清:
SocketAppender 是否可以只将事件发送到 Log4cplus 日志服务器,而不发送到任何其他服务器?
如果是这样的话:这是否意味着如果我想将日志消息发送到远程机器,那台机器必须安装 Log4cplus 库?
我也想知道- 这个 Log4cplus 日志服务器 运行 是否作为服务?是否需要特殊配置和预设置才能使用?
Can the SocketAppender only send events to the Log4cplus logging server, and not to any other server?
是的,是的。
does it mean that if I want to send log messages to remote machine, that machine must be installed with the Log4cplus lib?
嗯,有点。如果只想使用 SocketAppender
,则必须使用日志服务器。您也可以使用 SysLogAppender
并使用它发送到远程服务器。显然,您必须拥有系统日志服务并允许在其中从网络接收。您还可以编写自己的自定义附加程序,将事件发送到您想要的任何服务器。
I would also like to know- does this Log4cplus logging-server run as a service?
不,它是一个监听套接字的简单可执行文件。
and does it require special configuration and pre-setup in order to use it?
它需要配置文件,以便它知道在哪里记录事件。
我只是想分享我如何使用 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
.
来检查它
我希望更好地了解 Log4cplus SocketAppender 在接收此附加程序事件的日志服务器方面的工作方式。
我阅读了 loggingserver 和 socketappender 的 Log4cplus src 代码,我很乐意得到澄清:
SocketAppender 是否可以只将事件发送到 Log4cplus 日志服务器,而不发送到任何其他服务器? 如果是这样的话:这是否意味着如果我想将日志消息发送到远程机器,那台机器必须安装 Log4cplus 库?
我也想知道- 这个 Log4cplus 日志服务器 运行 是否作为服务?是否需要特殊配置和预设置才能使用?
Can the SocketAppender only send events to the Log4cplus logging server, and not to any other server?
是的,是的。
does it mean that if I want to send log messages to remote machine, that machine must be installed with the Log4cplus lib?
嗯,有点。如果只想使用 SocketAppender
,则必须使用日志服务器。您也可以使用 SysLogAppender
并使用它发送到远程服务器。显然,您必须拥有系统日志服务并允许在其中从网络接收。您还可以编写自己的自定义附加程序,将事件发送到您想要的任何服务器。
I would also like to know- does this Log4cplus logging-server run as a service?
不,它是一个监听套接字的简单可执行文件。
and does it require special configuration and pre-setup in order to use it?
它需要配置文件,以便它知道在哪里记录事件。
我只是想分享我如何使用 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
.