首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Log4j和集中化日志收集

Log4j和集中化日志收集
EN

Stack Overflow用户
提问于 2017-08-26 05:10:03
回答 2查看 411关注 0票数 1

我有一个现有的分布式应用程序,它使用log4j将日志写入本地服务器。我希望保留现有功能,并将其中一些日志发送到中央存储库。我见过使用log4j和SocketAppender将日志发送到远程服务器的示例,但还没有看到多个服务器发送到同一远程服务器的示例,将每个服务器的日志写在单独的文件中。有这样的例子吗?

作为另一种选择,我对使用JDBCAppender作为集中式日志存储库感到好奇,但我也有一个相同的问题,即在查看查询结果时如何区分消息来自何处。是否有标识可在监听程序服务器上解释的发送方的log4j属性设置?

EN

回答 2

Stack Overflow用户

发布于 2017-08-27 21:59:19

对于您的第一个问题-它将取决于您的客户端程序向其发送日志的远程服务器。如果你已经开发了一些程序来接收远程服务器上的日志,那么有两种方法可以为每个客户端日志创建单独的日志文件-

  1. 服务器程序侦听一个特定的端口,在接收到一些日志后,它应该检查客户端IP,然后为每个客户端IP创建日志文件。
  2. 使服务器程序侦听每个客户端的不同端口,一旦客户端连接到其特定端口,就接收数据并转储到日志文件中。这种方法看起来很简单,但不推荐使用。

如果您的服务器基于linux,我建议您使用来集中收集日志。在rsyslog中,您可以单独配置每个客户端,并将日志转储到单独的日志文件中。

第二个问题的 -您可以使用log4j的Nested diagnostic Context (NDC)特性在数据库中编写hostname。请参见this示例。这个示例使用USER_ID作为额外的列,用于在数据库中写入。类似地,您可以使用这个额外的列来编写hostname。在编写任何日志语句之前,在启动客户端程序时,您必须使用以下代码将值放入NDC中-

代码语言:javascript
复制
NDC.push(InetAddress.getLocalHost().getHostName()); 
票数 0
EN

Stack Overflow用户

发布于 2018-05-02 17:09:46

您必须在配置文件中进行一些更改。考虑到多个应用程序想要将它们的日志文件写入中央远程位置,如果是,那么下面提到的更改将有所帮助:您需要在每个单独应用程序的Log4j配置文件中进行更改。

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="60">
    <Properties>
        <Property name="server-log-path">REMOTE_SERVER_PATH</Property>
    </Properties>
    <Appenders>
    <File name="Login-App-File-Appender" fileName="${server-log-path}/file_name.log" >
            <PatternLayout>
                <pattern>
                    [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
                </pattern>
            </PatternLayout>
    </File>

 <File name="CheckOut-App-File-Appender" fileName="${server-log-path}/file_name.log" >
            <PatternLayout>
                <pattern>
                    [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
                </pattern>
            </PatternLayout>
    </File>
  </Appenders>

<Loggers>
        <Logger name="com.microService.LoginService" level="info" additivity="false">
            <AppenderRef ref="Login-App-File-Appender"/>

 </Logger>

 <Logger name="com.microService.CheckOutService" level="info" additivity="false">
            <AppenderRef ref="CheckOut-App-File-Appender"/>

 </Logger>
<Root>
            <AppenderRef ref="Login-App-File-Appender"/>
        </Root>
</Loggers>
</Configuration>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45889454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档