想问下你用的flink哪个版本呢? 如果是Flink 1.10-版本,可以在shell脚本中加上 -yD jobName=xxx,然后在logback自定义PatternLayout中用环境变量`_DYNAMIC_PROPERTIES`获取 如果是Flink 1.10+版本,则上述方式不可行,因为1.10+版本在作业启动执行 launch_container.sh <http://dn-rt199.jja.bigo:8042/node/containerlogs/container_e19_1597907464753_1954_01_000001/zengkejie/launch_container.sh/?start=-4096>脚本时,脚本中不再`export _DYNAMIC_PROPERTIES`变量,所以无法从环境变量获取,那么可以在flink-conf.yaml中添加 `env.java.opts: -Djob.name=xxx`,然后在 PatternLayout中获取启动参数即可
以上是我个人的实现方式,目前可正常运行,如有描述不正确的地方,欢迎探讨~ Jim Chen <chenshuai19950...@gmail.com> 于2020年8月31日周一 上午11:33写道: > 我现在是用shell脚本提交per job模式的任务,现在只能拿到yarn的applicationId,自定义的任务名,拿不到 > > > zilong xiao <acidzz...@gmail.com> 于2020年8月27日周四 下午7:24写道: > > > 如果是用CLI方式提交作业的话是可以做到的 > > > > Jim Chen <chenshuai19950...@gmail.com> 于2020年8月27日周四 下午6:13写道: > > > > > 如果是自动以PatternLayout的话,我有几点疑问: > > > > > > > > > 1、logback加载时机的问题,就是①先会运行logback相关类,②再执行你自定义的PatternLayout,③再去执行你的主类,在②的时候,此时还没法确定具体的启动类是啥,这种方式没法根据job动态变化 > > > > > > 如果使用env的话 > > > 1、配置环境变量的话,如果yarn有10个节点。那么每台是不是都要配置一下 > > > 2、因为是每个job都要传递,所以,这个应该是临时的环境变量吧 > > > 3、如果是配置的临时环境变量的话,那么在执行bin/flink run的时候,shell中是执行java > > > > -cp的,此时的主类,是org.apache.flink.client.cli.CliFrontend,这种方式,环境变量在传递的时候,会丢吧? > > > > > > zilong xiao <acidzz...@gmail.com> 于2020年8月25日周二 下午5:32写道: > > > > > > > > > 1:想加入跟业务相关的字段,例如jobId,jobName,可以继承PatternLayout,重写doLayout即可,在方法中对日志进行填充 > > > > 2:这些属性有办法可以从环境变量中获取 > > > > > > > > Jim Chen <chenshuai19950...@gmail.com> 于2020年8月25日周二 下午4:49写道: > > > > > > > > > 大家好: > > > > > 我们在做flink的日志收集到kafak时,使用的logback日志配置文件,目前的pattern是%d{yyyy-MM-dd > > > > > HH:mm:ss.SSS} [%thread] %-5level %logger{60} - > > > > > > %msg,有没有什么办法在里面加入每个job的id,name或者tasknamanger的主机名之类的信息啊。在做ELK的时候,方便查询。 > > > > > 这个配置文件,是整个项目的,是基于Yarn的per > job模式,难道每个主类打包的时候,都要改动不同的logbakc配置文件吗? > > > > > > > > > > > > > > >