禁用Apache Flink日志记录

时间:2017-04-08 16:58:17

标签: java distributed-computing apache-flink

我使用旧版本的Apache Flink,运行时2.11和Flink Core 1.1.2。由于与其他库的兼容性问题,我无法将其升级到较新的Apache Flink。我试图禁用Runtime上的节点日志记录,以便最大限度地缩短执行时间。我尝试使用以下代码,但仍显示消息:

Log4jLoggerAdapter logger = (Log4jLoggerAdapter)LoggerFactory
  .getLogger(JobManager.class);
Field loggerField = Log4jLoggerAdapter.class.getDeclaredField("logger");
loggerField.setAccessible(true);
Logger loggerObject = (Logger)loggerField.get(logger);


Field repoField = Category.class.getDeclaredField("repository");
repoField.setAccessible(true);
LoggerRepository repoObject = (LoggerRepository)repoField.get(loggerObject);

repoObject.setThreshold(Level.OFF);

另外,我想知道是否有办法在执行计划的每个阶段中交换消息的数量。

3 个答案:

答案 0 :(得分:1)

public static ExecutionEnvironment setupLocalEnvironment() {
     Configuration conf = new Configuration();
      env = new LocalEnvironment(conf);
      env.getConfig().disableSysoutLogging();
      return env;
}

答案 1 :(得分:0)

您可以在主功能中尝试这个:

org.apache.log4j.BasicConfigurator.configure(new NullAppender());

我对你的版本有疑问,但试一试。

答案 2 :(得分:0)

首先,您需要确定是使用slf4j + logback还是slf4j + log4j。 如果您使用slf4j + log4j,则通过以下方式禁用log4j

log4j.rootLogger=OFF

否则,您使用的是slf4j + logback,然后通过以下方式禁用logback

<!-- This affects logging for both user code and Flink -->
<root level="OFF">
    <appender-ref ref="file"/>
</root>