flink1.13.2的log4j2日志系统解决办法(免费版)

首先排除所有log4j和slf4相关的依赖,然后再加入以下依赖版本

        <!--统一日志系统-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.9</version>
        </dependency>

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>2.15.0</version>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.15.0</version>
        </dependency>


log4j.properties配置文件(注意文件名就叫log4j.properties,不用改flink框架源码里面就是这样写的)

#log4j系统参数,不用动
status = error
#日志文件保存路径需根据工程部署位置修改路径
property.LOG_HOME=/vmdata/dataCleanLogs
#修改控制台日志级别,打包前改成fatal,TRACE < DEBUG < INFO < WARN < ERROR < FATAL
property.CONSOLE_LOG_LEVEL=DEBUG

#系统日志级别不用动
property.OUTPUT_LOG_LEVEL=trace
property.BACKUP_HOME=backup
property.EVERY_FILE_SIZE=500M
property.FILE_MAX=10

# 日志要发到什么地方,控制台
appender.console.type = Console
# 本appender的名字,以便在Logger的配置项中能够调用
appender.console.name = STDOUT
#过滤器,过滤日志的级别
appender.console.filter.threshold.level = DEBUG
#过滤类型
appender.console.filter.threshold.type = ThresholdFilter
# 输出格式类型
appender.console.layout.type = PatternLayout
# 输出格式,不设置默认为 %m%n
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %5p %t %c{1}:%L - %m%n

# 采用RollingFile类型的Appender
appender.rolling.type=RollingFile
# 本appender的名字,以便在Logger的配置项中能够调用
appender.rolling.name=RollingFileAll
#过滤器,过滤日志的级别,可根据要保存的日志级别修改,建议不动
appender.rolling.filter.threshold.level = DEBUG
#过滤类型
appender.rolling.filter.threshold.type = ThresholdFilter
# 当前正在操作的日志文件的文件名
appender.rolling.fileName=${LOG_HOME}/dataClean_all.log
#归档后的日志文件的文件名格式,其中`%d{yyyy-MM-dd}`用来自动填充日期,配置到天就是按天归档,配置到小时就是按小时归档
appender.rolling.filePattern=${LOG_HOME}/${BACKUP_HOME}/dataClean_all.%d{yyyy-MM-dd-HH}_%i.log.gz 
# 启用Layout配置
appender.rolling.layout.type=PatternLayout
# 对应输出的每条日志的日志头
appender.rolling.layout.pattern=%d %p %C{1.} [%t] %m%n
# 启用Policy配置,指定滚动日志的策略
appender.rolling.policies.type=Policies
# 基于时间进行日志的切割,根据filePattern配置的日期格式而定
appender.rolling.policies.time.type=TimeBasedTriggeringPolicy
# 切割的间隔单位为2, 根据filePattern配置的日期格式归档
appender.rolling.policies.time.interval=2
# 修正时间范围, 从0时开始计数
appender.rolling.policies.time.modulate=true
#基于文件大小进行日志的切割
appender.rolling.policies.size.type=SizeBasedTriggeringPolicy
#文件大小
appender.rolling.policies.size.size=${EVERY_FILE_SIZE}
#配置Strategy用来删除过多的日志归档文件
appender.rolling.strategy.type=DefaultRolloverStrategy
# 滚动归档文件最大数量
appender.rolling.strategy.max=12

#错误日志配置
appender.error.type=RollingFile
appender.error.name=RollingFileError
appender.error.filter.threshold.level = error
appender.error.filter.threshold.type = ThresholdFilter
appender.error.fileName=${LOG_HOME}/dataClean_error.log
appender.error.filePattern=${LOG_HOME}/${BACKUP_HOME}/dataClean_error.%d{yyyy-MM-dd-HH}_%i.log
appender.error.layout.type=PatternLayout
appender.error.layout.pattern=%d %p %C{1.} [%t] %m%n
appender.error.policies.type=Policies
appender.error.policies.time.type=TimeBasedTriggeringPolicy
appender.error.policies.time.interval=2
appender.error.policies.time.modulate=true
appender.error.policies.size.type=SizeBasedTriggeringPolicy
appender.error.policies.size.size=${EVERY_FILE_SIZE}
appender.error.strategy.type=DefaultRolloverStrategy
appender.error.strategy.max=12

#warn日志配置
appender.warn.type=RollingFile
appender.warn.name=RollingFileWarn
appender.warn.filter.threshold.level = warn
appender.warn.filter.threshold.type = ThresholdFilter
appender.warn.fileName=${LOG_HOME}/dataClean_warn.log
appender.warn.filePattern=${LOG_HOME}/${BACKUP_HOME}/dataClean_warn.%d{yyyy-MM-dd-HH}_%i.log
appender.warn.layout.type=PatternLayout
appender.warn.layout.pattern=%d %p %C{1.} [%t] %m%n
appender.warn.policies.type=Policies
appender.warn.policies.time.type=TimeBasedTriggeringPolicy
appender.warn.policies.time.interval=2
appender.warn.policies.time.modulate=true
appender.warn.policies.size.type=SizeBasedTriggeringPolicy
appender.warn.policies.size.size=${EVERY_FILE_SIZE}
appender.warn.strategy.type=DefaultRolloverStrategy
appender.warn.strategy.max=12

#info日志配置
appender.info.type=RollingFile
appender.info.name=RollingFileInfo
appender.info.filter.threshold.level = info
appender.info.filter.threshold.type = ThresholdFilter
appender.info.fileName=${LOG_HOME}/dataClean_info.log
appender.info.filePattern=${LOG_HOME}/${BACKUP_HOME}/dataClean_info.%d{yyyy-MM-dd-HH}_%i.log
appender.info.layout.type=PatternLayout
appender.info.layout.pattern=%d %p %C{1.} [%t] %m%n
appender.info.policies.type=Policies
appender.info.policies.time.type=TimeBasedTriggeringPolicy
appender.info.policies.time.interval=2
appender.info.policies.time.modulate=true
appender.info.policies.size.type=SizeBasedTriggeringPolicy
appender.info.policies.size.size=${EVERY_FILE_SIZE}
appender.info.strategy.type=DefaultRolloverStrategy
appender.info.strategy.max=12

#debug日志配置
appender.debug.type=RollingFile
appender.debug.name=RollingFileDebug
appender.debug.filter.threshold.level = debug
appender.debug.filter.threshold.type = ThresholdFilter
appender.debug.fileName=${LOG_HOME}/dataClean_debug.log
appender.debug.filePattern=${LOG_HOME}/${BACKUP_HOME}/dataClean_debug.%d{yyyy-MM-dd-HH}_%i.log
appender.debug.layout.type=PatternLayout
appender.debug.layout.pattern=%d %p %C{1.} [%t] %m%n
appender.debug.policies.type=Policies
appender.debug.policies.time.type=TimeBasedTriggeringPolicy
appender.debug.policies.time.interval=2
appender.debug.policies.time.modulate=true
appender.debug.policies.size.type=SizeBasedTriggeringPolicy
appender.debug.policies.size.size=${EVERY_FILE_SIZE}
appender.debug.strategy.type=DefaultRolloverStrategy
appender.debug.strategy.max=12
############################################################################################
# Allows this configuration to be modified at runtime. The file will be checked every 30 seconds.
monitorInterval=30
# 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
logger.shaded_zookeeper.name = org.apache.flink.shaded.zookeeper3
logger.shaded_zookeeper.level = INFO
# 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
############################################################################################
rootLogger.level = debug
rootLogger.appenderRef.stdout.ref = STDOUT
rootLogger.appenderRef.debug.ref = RollingFileDebug
rootLogger.appenderRef.info.ref = RollingFileInfo
rootLogger.appenderRef.warn.ref = RollingFileWarn
rootLogger.appenderRef.error.ref = RollingFileError
#rootLogger.appenderRef.all.ref = RollingFileAll


使用log4j日志类

private static final Logger logger = LoggerFactory.getLogger(DemoTask.class);

img

img

idea的jvm配置

img

img

将log4j.properties上传至服务器的flink安装目录的config下面即可.

...全文
724 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

9

社区成员

发帖
与我相关
我的任务
社区描述
专注于海量数据治理、大数据开发技术栈的实战交流、讨论,相互学习,以大数据开发技术实战为主线,从0到1建设离线和实时数据仓库为目标的,基于车联网场景的学习论坛
大数据数据仓库flink 个人社区 北京·朝阳区
社区管理员
  • 日复一日伐树的熊哥
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧