【问题标题】:Making log files in NiFi在 NiFi 中制作日志文件
【发布时间】:2017-08-30 11:33:04
【问题描述】:

我想为 NiFi 中的每个处理器创建日志文件。我使用splitText 来拆分日志文件,然后在它之后处理它们我有一个日志消息分布在 5 个文件中。我想保留这些数据并将其写入每个处理器的一个日志文件中(例如,我使用此表达式来获取 executescript processor${regex:toLower():contains('executescript')})。

  1. 如何将此日志写入每个处理器的一个日志文件中?
  2. 我应该使用任何本机 NiFi 处理器还是使用 Groovy 代码制作?

是否可以获取我使用的流文件数据,但处理器似乎反应不佳:

def flowFile1 = session.create();
def flowFile=session.get();

while(flowFile != null){
    flowFile1 = session.write(flowFile, {outputStream -> def builder = new groovy.json.JsonBuilder(flowFile) 
    outputStream.write(builder.toPrettyString().getBytes(Standar‌​dCharsets.UTF_8)) } as OutputStreamCallback) 
}

flowFile1 = session.putAttribute(flowFile,'filename','ExecuteScriptLog')
session.remove(flowFile);
session.transfer(flowFile1, REL_SUCCESS)

我有 WorkFlow ike thi 和 i wnat 来获取连接名称,例如“executescrip”并使用此名称制作流文件,并输入放置在此“executescript”队列中的所有流文件数据,并将其写入我创建的一个文件中(在本例中为“执行脚本”)

【问题讨论】:

  • 是否可以获取连接名称,然后根据它命名流文件?我想做到这一点,因为我使用 routeonattribute 并用 prosesor 名称命名了 onnection
  • 我也想知道是否可以获取 flowilfe 数据并将其放入 json 中

标签: groovy apache-nifi


【解决方案1】:

您可以通过NIFI_HOME/conf/logback.xml 文件管理的日志记录配置。

您可以在此处定义日志文件(附加程序)以及应记录哪些消息。

logback 手册:https://logback.qos.ch/manual/index.html

每个处理器都有一个可以在屏幕上看到的类名(例如:org.apache.nifi.processors.attributes.UpdateAttribute)- 您需要此信息来配置 logback.xml 中的记录器并将其定向到附加程序(文件)

你也可以在 logback.xml 中为每个 appender 定义过滤 这样只有匹配正则表达式的消息才会被附加到其中。

【讨论】:

  • 我可以为每个进程或类型制作一个 flowfie,例如制作名为 invokehttp 的 flowfile 并在此处写入所有 inovkehttp 日志吗? (我的意思是 nifi -app 日志)
  • 是否有可能通过 groovy 代码在一个执行脚本代码中完成?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
  • 2022-12-19
  • 2014-08-01
  • 2011-12-03
  • 1970-01-01
相关资源
最近更新 更多