Flink 1.11.1 版本对 UI 进行了优化,日志做了更加详细的分类,但是 jm 和 tm 的日志输出都在一个文件里面,任务跑时间长的话,日志文件会非常大,虽然目前 UI 已经优化的比较好了 ,但还是会出现卡顿的情况,所以可以对 Flink 的日志做一个滚动的配置,这样可以控制每个文件的大小.
jm 和 tm 上用的 log 配置都依赖于 flink/conf/log4j.properties 配置文件,具体的配置如下:
# 滚动日志的配置 # This affects logging for both user code and Flink rootLogger.level = DEBUG rootLogger.appenderRef.rolling.ref = RollingFileAppender # Uncomment this if you want to _only_ change Flink's logging #logger.flink.name = org.apache.flink #logger.flink.level = INFO # The following lines keep the log level of common libraries/connectors on # log level INFO. The root logger does not override this. You have to manually # change the log levels here. logger.akka.name = akka logger.akka.level = INFO logger.kafka.name= org.apache.kafka logger.kafka.level = INFO logger.hadoop.name = org.apache.hadoop logger.hadoop.level = INFO logger.zookeeper.name = org.apache.zookeeper logger.zookeeper.level = INFO # Log all infos in the given rolling file appender.rolling.name = RollingFileAppender appender.rolling.type = RollingFile appender.rolling.append = false #日志文件名 appender.rolling.fileName = ${sys:log.file} #指定当发生文件滚动时,文件重命名规则 appender.rolling.filePattern = ${sys:log.file}.%i appender.rolling.layout.type = PatternLayout # 输出模板 appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n # 指定记录文件的保存策略,该策略主要是完成周期性的日志文件保存工作 appender.rolling.policies.type = Policies # 基于日志文件大小的触发策略 appender.rolling.policies.size.type = SizeBasedTriggeringPolicy # 当日志文件大小大于size指定的值时,触发滚动 appender.rolling.policies.size.size = 5MB # 文件保存的覆盖策略 appender.rolling.strategy.type = DefaultRolloverStrategy # 生成分割(保存)文件的个数,默认为5(-1,-2,-3,-4,-5) appender.rolling.strategy.max = 10 # Suppress the irrelevant (wrong) warnings from the Netty channel handler logger.netty.name = org.apache.flink.shaded.akka.org.jboss.netty.channel.DefaultChannelPipeline logger.netty.level = OFF
提交一个 Flink 任务看一下滚动日志的效果如下:
可以看到日志文件的大小是 5M 一个,保留最新的 10 个文件,这些可以在配置文件中根据实际的情况去调整.这样查看日志就非常的顺畅了.