Apache NiFi可以配置logback.xml文件以通过UDP将日志发送到远程服务器吗?

时间:2018-12-07 11:13:44

标签: udp logback apache-nifi

我有一个Apache NiFi实例,需要将消息记录到远程Graylog服务器。我希望将输出到nifi-app.log,nifi-bootstrap.log和nifi-user.log的所有输出以及它们的默认本地策略发送到此服务器。

由于网络配置需要UDP连接,我正在尝试通过UDP将日志发送到服务器。

我的问题:

  1. logback是否支持通过UDP发送日志?
  2. 如果是,该配置是什么样的?
  3. 是否有更好的方法配置Apache NiFi以通过UDP发送日志?

2 个答案:

答案 0 :(得分:3)

据我所知,Logback没有提供开箱即用的UDP附加程序,因此您需要为某些UDP附加程序添加必要的JAR,可能是logstash一个:

https://github.com/logstash/logstash-logback-encoder

这可能有效,但是将JAR添加到NiFi的lib目录中有点危险,因为它们最终会出现在所有NiFi处理器的类路径中,并且可能会产生意想不到的后果。

其他选项...

1)使用TCP

logback已经提供了套接字附加器: https://logback.qos.ch/manual/appenders.html#SocketAppender

2)使用单独的NiFi实例,该实例用于监视第一个NiFi实例的日志。流程为TailFile-> PutUDP,其中TailFile指向第一个NiFi的nifi-app.log。

答案 1 :(得分:0)

使用 LogMessage 处理器并确保所有 LogMessage 日志条目都转到特定文件 (flow-events.log) 然后跟踪它的简单解决方案怎么样?

<appender name="EVENTS_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${org.apache.nifi.bootstrap.config.log.dir}/flow-events.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${org.apache.nifi.bootstrap.config.log.dir}/flow-events_%d.log</fileNamePattern>
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
    </encoder>
</appender>
<logger name="org.apache.nifi.processors.standard.LogMessage" level="INFO" additivity="false">
    <appender-ref ref="EVENTS_FILE" />
</logger>