在NiFi中制作日志文件

时间:2017-08-30 11:33:04

标签: groovy apache-nifi

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

  1. 如何在每个处理器的一个日志文件中写入此日志?
  2. 我应该使用任何原生NiFi处理器还是使用Groovy代码制作它?
  3. 是否有可能获得我使用过的流文件数据,但处理器似乎反应不好:

    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和我想获取连接名称,例如' executioncrip&t;并使用此名称生成流文件,并输入所有流程文件数据,这些数据放在此' executioncript'排队并将其写入我创建的一个文件中(在本例中为' executioncript') enter image description here

1 个答案:

答案 0 :(得分:1)

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

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

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

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

您也可以在logback.xml中为每个appender定义过滤 这样只有与regexp匹配的消息才会被附加到其中。