flink1.17 日志文件大小哪里控制得?谁有log4j配置 发一份出来
几分钟就10几个g
在 Flink 中,可以通过修改 conf/log4j.properties 文件来配置日志的输出格式和文件大小。下面是一份基本的 log4j 配置示例:
# Global logging configuration
log4j.rootLogger=INFO, console
# Direct log messages to stdout and stderr
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.stderr=org.apache.log4j.ConsoleAppender
log4j.appender.stderr.Target=System.err
log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
log4j.appender.stderr.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
# Configure file appender for JobManager log files.
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=${LOG_DIR}/jobmanager.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.file.Append=true
log4j.appender.file.Threshold=ALL
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Configure file appender for TaskManager log files.
log4j.appender.taskmanager.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.taskmanager.file.File=${LOG_DIR}/taskmanager.log
log4j.appender.taskmanager.file.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.taskmanager.file.Append=true
log4j.appender.taskmanager.file.Threshold=ALL
log4j.appender.taskmanager.file.layout=org.apache.log4j.PatternLayout
log4j.appender.taskmanager.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
在这个配置中,可以通过修改 ${LOG_DIR} 变量来设置日志文件的存储路径。另外,也可以通过修改 log4j.appender.file.MaxFileSize
和 log4j.appender.taskmanager.file.MaxFileSize
参数来限制日志文件的大小。
注意:Flink 不会自动删除过期的日志文件,需要定期清理旧的日志文件以防止磁盘空间耗尽。
Flink 使用 Logback 作为日志框架,因此您可以通过修改 Logback 配置文件来控制日志文件的大小。以下是一个基本的 Logback 配置文件示例,用于限制日志文件的大小:
logging.file.path: /path/to/logback.xml
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>/path/to/taskmanager.log</file>
<append>true</append>
<encoder>
<pattern>%date %level %logger{10} - %message%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/path/to/taskmanager.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize> <!-- 日志大小 -->
</timeBasedFileNamingAndTriggeringPolicy>
<totalSizeCap>1GB</totalSizeCap> <!-- 最大日志总大小 -->
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
在Flink中,日志文件的大小可以通过log4j的配置来控制。log4j是Apache的一个开源项目,它是一个用Java编写的强大的日志记录框架。Flink使用log4j来记录日志,因此可以通过修改log4j的配置文件来控制日志文件的大小。
下面是一个示例的log4j配置文件,可以限制日志文件的大小:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<RollingFile name="file" fileName="logs/flink.log" filePattern="logs/flink-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<DefaultRolloverStrategy max="10" />
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="file" />
</Root>
</Loggers>
</Configuration>
在这个配置中,SizeBasedTriggeringPolicy
用于指定日志文件的大小,size
属性设置为"10 MB",表示当日志文件大小达到10 MB时,将会创建一个新的日志文件。DefaultRolloverStrategy
用于指定日志文件的最大数量,max
属性设置为"10",表示最多保留10个日志文件。
你可以将这个配置文件保存为log4j.properties
或log4j.xml
,然后将其放置在Flink的类路径下,例如$FLINK_HOME/conf/
目录下。在Flink启动时,将会自动加载这个配置文件,并按照指定的方式记录日志。
JobManager 和 TaskManager 日志输出在同一个文件中。jm 和 tm 上用的 log 配置都依赖于 flink/conf/log4j.properties 配置文件。
如下配置将滚动日志设置为最大5m,最多10个文件。
# 滚动日志的配置
# 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版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。