做本地网站能赚钱么,十大装饰公司排名,管理咨询公司收费标准报价单,wordpress评论验证码引言
我们做项目过程中发现flink日志不同模式启动#xff0c;存放位置不同#xff0c;查找任务日志很不方便#xff0c;具体问题如下#xff1a;
原始flink的日志配置文件log4j-cli.properties appender.file.append false#xff0c;取消追加#xff0c;直接覆盖掉上…引言
我们做项目过程中发现flink日志不同模式启动存放位置不同查找任务日志很不方便具体问题如下
原始flink的日志配置文件log4j-cli.properties appender.file.append false取消追加直接覆盖掉上一次提交任务的信息。这里改为true解决。application模式启动任务失败/取消后无法找到错误日志需要用命令查找对应appId yarn application -appId Application IDflink session模式重启集群导致之前提交任务信息全部删除开启历史服务器historyserver.archive.fs.dir: hdfs:///completed-jobs/其他配置参考官方文档
这些问题虽然都找到了对应的解决办法但是仍然很不方便。所有我决定研究flink的log配置文件将所有log写入数据库/kafka中。 在查找资料中发现log4j2配置都是xml方式而flink是以properties的配置方式网上也没有properties方式配置JDBCAppender的资料。注log4j2在低版本是不支持properties的 log4j2.properties写数据库
先看官网这里介绍了flink conf目录下的每个配置文件的作用这里我们针对log4j2修改logback 这里没有涉及可以自行查看官网配置。 我们准备收集到所有相关日志所以这四个文件都需要配置JDBCAppender。 我这里是连接的是mysql将mysql-connector-java-8.0.28.jar放在lib目录下 官方支持一下四种模式以DriverManager为示例
rootLogger.appenderRef.jdbc.refJDBCAppender
appender.jdbc.nameJDBCAppender
appender.jdbc.typeJDBC
appender.jdbc.tableNameflink_logs
appender.jdbc.connectionSource.typeDriverManager
appender.jdbc.connectionSource.connectionStringjdbc:mysql://ip:port/database
appender.jdbc.connectionSource.userNameroot
appender.jdbc.connectionSource.passwordroot
appender.jdbc.columnConfigs1.typeColumn
appender.jdbc.columnConfigs1.namesource
appender.jdbc.columnConfigs1.pattern%c
appender.jdbc.columnConfigs2.typeColumn
appender.jdbc.columnConfigs2.nametype
appender.jdbc.columnConfigs2.pattern%p
appender.jdbc.columnConfigs3.typeColumn
appender.jdbc.columnConfigs3.namecreate_time
appender.jdbc.columnConfigs3.pattern%d{yyyy-MM-dd HH:mm:ss,SSS}
appender.jdbc.columnConfigs4.typeColumn
appender.jdbc.columnConfigs4.namemassage
appender.jdbc.columnConfigs4.pattern%m %throwableJDBCAppender更多详细配置
log4j2.properties写kafka
将kafka-client.jar放在lib目录下 官方具体配置说明
rootLogger.appenderRef.kafka.refKafkaAppender
appender.kafka.nameKafkaAppender
appender.kafka.typeKafka
appender.kafka.syncSendtrue
appender.kafka.ignoreExceptionsfalse
appender.kafka.topicflink_log_test
appender.kafka.property.typeProperty
appender.kafka.property.namebootstrap.servers
appender.kafka.property.valueip:9092
appender.kafka.layout.type PatternLayout
appender.kafka.layout.pattern %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n进阶
完成以上操作我们已经可以将日志写入mysql/kafka中了但是我发现所有日志写入后无法区分集群任务分别是那些了当然可以在配置中每一个配置文件写入不同的表但是job任务如何区分呢 我们可以设置环境变量或系统环境变量让log4j从中获取自定义值 更详细内容参考官方地址