Search code examples
apache-flinkflink-streaming

Flink Logger nullPointException


I want to write log in Flink code. So, I add these lines in the conf/log4j.properties:

log4j.logger.myLogger=DEBUG, FILE
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.File=myLog.out
log4j.appender.FILE.ImmediateFlush=true
log4j.appender.FILE.Threshold=debug
log4j.appender.FILE.Append=true
log4j.appender.FILE.DatePattern='.' yyyy-MM-dd-HH-mm
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.myLogger.layout.conversionPattern=%d %-5p %c - %m%n

Then, I get the logger instance in my map class as follow:

private transient Logger logger = LoggerFactory.getLogger("FILE");

or

private transient Logger logger = LoggerFactory.getLogger(MapClass.class);

But, I get nullPointException, when I use the logger instance.

Would you please guide me that what is wrong?

Thank you in advance.


Solution

  • Your logger is marked as transient, so after serialization it is null.

    You either have to initialize it in the open() method of your RichMapFunction, or just make it static.