Flink任务自定义个性化配置logback.xml文件

之前已经写过如何使用logback将日志直接写入Kafka,然后通过es和kibana实时查看

但是如果我们想要每个任务都能够带上单独的信息比如开发者、任务名称等信息,那么就需要每个任务都指定一个logback文件,在这里将主要都步骤写一下

修改Logback源码,实现canal日志输出当前Ip地址和文件夹

1.直接修改logback-classic ch.qos.logback.classic.PatternLayout增加自定义变量

        defaultConverterMap.put("developer", DeveloperConverter.class.getName());
        defaultConverterMap.put("jobname", JobNameConverter.class.getName());
package ch.qos.logback.classic.pattern;

import ch.qos.logback.classic.spi.ILoggingEvent;

public class DeveloperConverter extends ClassicConverter {
    private static String developer = "";

    static {
        try {
            developer = System.getProperty("developer");
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    public String convert(ILoggingEvent event) {
        return developer;
    }
}
package ch.qos.logback.classic.pattern;

import ch.qos.logback.classic.spi.ILoggingEvent;

public class JobNameConverter extends ClassicConverter {
    private static String jobName = "";

    static {
        try {
            jobName = System.getProperty("jobname");
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    public String convert(ILoggingEvent event) {
        return jobName;
    }
}

2.任务启动的时候增加环境变量

-yD env.java.opts="-Ddeveloper=$dev_user -Djobname=$ynm"

其中$dev_user为任务开发者 $ynm为任务名称

 这种方案有一点小问题就是 在启动的时候main线程获取不到上面的参数,但不影响大局。

 

另外下面这种方案不可行,只在启动的时候能够使用到自定义的配置,TM任务打出来的日志都是使用默认conf/logback.xml

1.在启动脚本中将配置文件写入到logback.xml

echo "" > logback.xml

2.修改flink框架启动脚本

vim flink-1.10.1/bin/flink

将这行注释

#log_setting=(-Dlog.file="$log" -Dlog4j.configuration=file:"$FLINK_CONF_DIR"/log4j-cli.properties -Dlogback.configurationFile=file:"$FLINK_CONF_DIR"/logback.xml)

加上这行
log_setting=(-Dlog.file="$log" -Dlog4j.configuration=file:"$FLINK_CONF_DIR"/log4j-cli.properties)

其实就是将-Dlogback.configurationFile=file:"$FLINK_CONF_DIR"/logback.xml去掉了

3.在任务启动命令增加配置项

-yD env.java.opts="-Dlogback.configurationFile=logback.xml" 

4.将conf/下log4j.properties都移除掉

 

参考资料:

https://ci.apache.org/projects/flink/flink-docs-release-1.10/monitoring/logging.html#configuring-logback

posted @ 2020-11-16 18:38  博而不客  阅读(1804)  评论(0编辑  收藏  举报