2017-08-30 3 views
0

Ich möchte Protokolldateien für jeden Prozessor in NiFi machen. Ich benutze splitText zum Aufteilen von Protokolldateien und dann verarbeitet sie, nachdem ich eine Protokollnachricht in 5 Dateien verteilen. Ich möchte diese Daten behalten und sie in eine Protokolldatei für jeden Prozessor schreiben (zum Beispiel benutze ich diesen Ausdruck, um den execurscript Prozessor ${regex:toLower():contains('executescript')} zu erhalten).Erstellen von Protokolldateien in NiFi

  1. Wie kann ich diese Protokolle in eine Protokolldatei für jeden Prozessor schreiben?
  2. Sollte ich einen nativen NiFi-Prozessor verwenden oder per Groovy-Code machen?

Ist es möglich, Daten Flowfile Ich habe diese aber Prozessor scheint zu bekommen schlechte Antwort zu haben:

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) 

I WorkFlow ike thi haben und i wnat Verbindungsnamen zum Beispiel ‚executescrip't zu bekommen und machen Flowfile mit diesem Namen und Eingabe alle Flowfile Daten Whcih innerhalb dieser ‚ExecuteScript‘ Warteschlange gestellt wird und schreiben Sie es in einer Datei, die von mir erstellt (in diesem Fall ‚ExecuteScript‘) enter image description here

+0

ist es möglich, Verbindungsname zu bekommen und dann Flow-Datei entsprechend zu benennen? ich möchte es machen, weil ich routeonattribute benutze und onnection durch prosesor names –

+0

genannt habe auch ich will wissen, wenn es möglich ist, flowilfe daten zu erhalten und es in json –

Antwort

1

die Logging-Konfiguration können Sie verwalten durch NIFI_HOME/conf/logback.xml Datei .

können Sie hier Protokolldateien (Appender) definieren und welche Nachrichten protokolliert werden sollen.

das logback Handbuch: https://logback.qos.ch/manual/index.html

jeder Prozessor hat einen Klassennamen, die Sie auf dem Bildschirm sehen können (zB: org.apache.nifi.processors.attributes.UpdateAttribute) - Sie diese Informationen benötigen Logger in logback.xml zu konfigurieren und leiten sie (Datei appender)

Sie können auch Filterung in der logback.xml für jeden Appender definieren, so dass nur Nachrichten, die mit regexp übereinstimmen, darin eingefügt werden.

+0

zu setzen kann ich einen flowfie für jeden processsor typ für beispiel machen flowfile genannt invokehttp und schreibe hier alle inovkehttp logs? (ich meine Nifi-App-Logs) –

+0

ist es möglich, es in einem Execscript-Code von groovy Code zu tun? –

Verwandte Themen