Flink 记录器 nullPointErexception
Flink Logger nullPointException
想在Flink代码中写log
。所以,我在 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
然后,我在地图 class 中获取记录器实例如下:
private transient Logger logger = LoggerFactory.getLogger("FILE");
或
private transient Logger logger = LoggerFactory.getLogger(MapClass.class);
但是,当我使用记录器实例时,我得到 nullPointException
。
你能告诉我哪里出了问题吗?
提前谢谢你。
您的记录器被标记为瞬态,因此在序列化后它为空。
您要么必须在 RichMapFunction 的 open() 方法中对其进行初始化,要么将其设为静态。
想在Flink代码中写log
。所以,我在 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
然后,我在地图 class 中获取记录器实例如下:
private transient Logger logger = LoggerFactory.getLogger("FILE");
或
private transient Logger logger = LoggerFactory.getLogger(MapClass.class);
但是,当我使用记录器实例时,我得到 nullPointException
。
你能告诉我哪里出了问题吗?
提前谢谢你。
您的记录器被标记为瞬态,因此在序列化后它为空。
您要么必须在 RichMapFunction 的 open() 方法中对其进行初始化,要么将其设为静态。