【问题标题】:Log4cplus: SocketAppender logging serverLog4cplus:SocketAppender 日志服务器
【发布时间】:2018-11-09 19:50:18
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: sockets server log4cplus


    【解决方案1】:

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

    是的,是的。

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

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

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

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

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

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

    【讨论】:

      【解决方案2】:

      我只是想分享一下我是如何使用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 来检查它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-26
        • 2011-04-25
        • 2016-06-12
        • 1970-01-01
        • 2017-08-21
        • 2012-04-12
        • 2012-06-01
        相关资源
        最近更新 更多