【问题标题】:Logrotation for flink not working with logrotate.dflink 的 Logrotation 不适用于 logrotate.d
【发布时间】:2019-03-05 05:30:49
【问题描述】:

我想为 flink 启用日志轮换,但没有看到重新加载进程的选项。

尝试使用带有 copytruncate 选项的“logrotate.d”启用日志轮换,但导致创建稀疏文件。

是否有任何选项可以在不重启进程的情况下为 flink taskmanager 启用日志轮换。

【问题讨论】:

  • 你有没有在 flink/conf 安装中尝试过类似内部 log4j.properties 的东西? log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=${log.file} log4j.appender.file.MaxFileSize=1000MB log4j.appender.file.MaxBackupIndex=0 log4j.appender.file.append=false log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
  • 这是按预期工作的,谢谢。
  • 太棒了!您可以将其标记为正确答案:)

标签: google-cloud-platform apache-flink flink-streaming


【解决方案1】:

你有没有在 flink/conf 安装中尝试过类似内部 log4j.properties 的东西? log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=${log.file} log4j.appender.file.MaxFileSize=1000MB log4j.appender.file.MaxBackupIndex=0 log4j.appender.file.append=false log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n

【讨论】:

    【解决方案2】:

    距离最初的答案已经有几年了。我需要在 EMR 上为 Flink 1.13 做同样的事情。我认为 EMR 是一个足够常见的平台,我会分享对我有用的东西。

    我相信我的回答和前面的主要区别在于 Flink 1.13 使用 Log4j 2。我怀疑前面的例子是使用 Log4j 版本 1,因为有这样一行,例如:

    log4j.appender.file.MaxBackupIndex=0

    但在我下面的代码中,也是如此

    appender.main.strategy.max = 0(我实际上在代码中使用了 1000,但想展示一个苹果与苹果的比较)

    这是有道理的,因为在Migration from log4j to log4j2:the equivalent attribute to MaxFileSize and MaxBackupIndex 中它说:

    在 Log4j 2 中,这些值与触发策略或 RolloverStrategy 相关联

    总之,EMR主节点上的配置文件是/etc/flink/conf.dist/log4j.properties

    这是完整的文件内容(减去顶部的样板许可证)。

    我对文件内容所做的每个更改以支持日志滚动的每个地方都有一个rolling_file_change 评论:

    # This affects logging for both user code and Flink
    rootLogger.level = INFO
    rootLogger.appenderRef.file.ref = MainAppender
    
    # 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 file
    appender.main.name = MainAppender
    
    # rolling_file_change: original line
    # appender.main.type = File
    # rolling_file_change: replacement line
    appender.main.type = RollingFile
    
    appender.main.append = false
    appender.main.fileName = ${sys:log.file}
    
    # rolling_file_change: net new line
    appender.main.filePattern = ${sys:log.file}.%i
    
    appender.main.layout.type = PatternLayout
    appender.main.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
    
    # rolling_file_change: new block start
    appender.main.policies.type = Policies
    appender.main.policies.size.type = SizeBasedTriggeringPolicy
    appender.main.policies.size.size=10MB
    appender.main.strategy.type = DefaultRolloverStrategy
    appender.main.strategy.max = 1000
    # rolling_file_change: new block end
    
    # 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
    

    【讨论】:

      猜你喜欢
      • 2021-12-26
      • 1970-01-01
      • 2022-06-10
      • 2021-05-31
      • 2020-09-18
      • 2017-08-15
      • 1970-01-01
      • 2018-06-30
      • 1970-01-01
      相关资源
      最近更新 更多