You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@nifi.apache.org by sally <sa...@gmail.com> on 2018/01/03 15:45:29 UTC

Nifi: how to convert multiple log file in one file?

I have many internal log , which i write myself inside nifi environment, i
want to input all this data inside one log flowFile, but this code trows
Null pointer exception what should i cahnge?

import java.nio.charset.StandardCharsets;
import org.apache.commons.io.IOUtils;
import org.apache.nifi.processor.FlowFileFilter;
import groovy.json.JsonSlurper;
import groovy.json.JsonBuilder;

def flowFile = session.get();
def  n=0;

if(!flowFile)return
def size = flowFile.getAttribute('fileSize');
int value = size as Integer;
log.error("g");
if((value/338)>1){
def ffList = session.get(new FlowFileFilter(){
    public FlowFileFilterResult filter(FlowFile ff) {

        if( size == ff.getAttribute('fileSize') ){ n++; return
FlowFileFilterResult.ACCEPT_AND_CONTINUE;
        }
        else{
        return FlowFileFilterResult.REJECT_AND_CONTINUE
        }
    }

})

session.transfer(ffList[n-1],REL_SUCCESS);
session.remove( ffList[0..-2] )
session.remove(flowFile);

}
else{

session.transfer(flowFile,REL_SUCCESS);
}



--
Sent from: http://apache-nifi-developer-list.39713.n7.nabble.com/

Re: Nifi: how to convert multiple log file in one file?

Posted by Jeff <jt...@gmail.com>.
Hello Sally,

There's a utility [1] written by Matt Burgess that might help you debug
your scripts more quickly, without having to run them in NiFi.  I haven't
tested your code, but please make sure your usage of whitespace isn't
causing any issues. The following code looks like there might be a newline
after the return:
        if( size == ff.getAttribute('fileSize') ){ n++; return
FlowFileFilterResult.ACCEPT_AND_CONTINUE;
        }

Groovy does not require semicolons to terminate statements, and I am no
groovy expert, but I believe newlines do terminate statements.

Also, verify that the "fileSize" attribute exists on the flowfiles you're
processing.  One of the ways you can do that is through the Provenance UI.

[1] https://github.com/mattyb149/nifi-script-tester

On Wed, Jan 3, 2018 at 10:45 AM sally <sa...@gmail.com>
wrote:

> I have many internal log , which i write myself inside nifi environment, i
> want to input all this data inside one log flowFile, but this code trows
> Null pointer exception what should i cahnge?
>
> import java.nio.charset.StandardCharsets;
> import org.apache.commons.io.IOUtils;
> import org.apache.nifi.processor.FlowFileFilter;
> import groovy.json.JsonSlurper;
> import groovy.json.JsonBuilder;
>
> def flowFile = session.get();
> def  n=0;
>
> if(!flowFile)return
> def size = flowFile.getAttribute('fileSize');
> int value = size as Integer;
> log.error("g");
> if((value/338)>1){
> def ffList = session.get(new FlowFileFilter(){
>     public FlowFileFilterResult filter(FlowFile ff) {
>
>         if( size == ff.getAttribute('fileSize') ){ n++; return
> FlowFileFilterResult.ACCEPT_AND_CONTINUE;
>         }
>         else{
>         return FlowFileFilterResult.REJECT_AND_CONTINUE
>         }
>     }
>
> })
>
> session.transfer(ffList[n-1],REL_SUCCESS);
> session.remove( ffList[0..-2] )
> session.remove(flowFile);
>
> }
> else{
>
> session.transfer(flowFile,REL_SUCCESS);
> }
>
>
>
> --
> Sent from: http://apache-nifi-developer-list.39713.n7.nabble.com/
>