2017-08-30 64 views
0

我想爲NiFi中的每個處理器製作日誌文件。我使用splitText分割日誌文件,然後處理它們,我有一個日誌消息分佈在5個文件中。我想保留這些數據並將其寫入每個處理器的一個日誌文件中(例如,我使用這個表達式來獲取執行處理器${regex:toLower():contains('executescript')})。在NiFi中製作日誌文件

  1. 如何在每個處理器的一個日誌文件中寫入此日誌?
  2. 我應該使用任何原生NiFi處理器還是通過Groovy代碼創建它?

是否有可能獲得flowfile數據我用這個,但處理器似乎有不好的反應:

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) 

我有工作流IKE THI和我wnat獲取連接名稱,例如「executescrip't和讓flowfile與該名稱輸入whcih放在這個「executescript」隊列中,並把它寫在我創建一個文件中的所有flowfile數據(在這種情況下,「executescript」) enter image description here

+0

是否可以獲取連接名稱,然後根據它命名流文件?我想使它,因爲我使用routeonattribute,並已通過prosesor名稱命名連接 –

+0

也我想知道是否有可能獲取flowilfe數據並將其放入json –

回答

1

日誌配置可以通過NIFI_HOME/conf/logback.xml管理文件。

你可以在這裏定義日誌文件(appender)和應該記錄哪些消息。

的手動的logback:https://logback.qos.ch/manual/index.html

每個處理器都有一個類名,你可以在屏幕上看到(例如:org.apache.nifi.processors.attributes.UpdateAttribute) - 你需要這個信息在logback.xml配置記錄儀,將它以追加程序(文件)

此外,您還可以在每個appender 的logback.xml中定義過濾,以便只有與regexp匹配的消息纔會附加到其中。

+0

我可以使每個processsor類型的一個flowfie例如使flowfile調用invokehttp並在這裏寫入所有inovkehttp日誌? (我的意思是nifi -app日誌) –

+0

是否有可能通過groovy代碼在一個executecript代碼中執行它? –