问题:
hi、
flink程序日志上报到kafka可以使用现成的KafkaLog4jAppender,但是这个现成的类没办法在上报的message中携带app_id,没有app_id就没办法识别是哪个app的日志,请问怎样才能在上报的日志中添加app_id
答案:
我们的获取逻辑是通过自定义KafkaLog4jAppender,自定义appender通过解析当前系统路径(因为flink每个taskmanager会自己定义一个带有applicationId的路径,然后里面会放各种jar包,包括我自定义的appender),获取之后通过MDC.put(),给日志加一列appId,在appder里面把日志上报到外部的日志系统
实现
log4j.properties文件配置
log4j.rootLogger=INFO,kafka,console
# Uncomment this if you want to _only_ change Flink's logging
#log4j.logger