"Flink 打印运行日志:使用 log4j 或 slf4j 记录日志"\n\n本文将介绍如何在 Flink 中使用 log4j 或 slf4j 记录和打印运行日志。\n\n1. 添加依赖\n\n首先,需要在 Flink 项目的依赖中添加 log4j 或 slf4j 相关的库。\n\n例如,如果选择 slf4j,可以添加以下依赖:\n\nxml\n<dependency>\n <groupId>org.apache.flink</groupId>\n <artifactId>flink-core</artifactId>\n <version>${flink.version}</version>\n</dependency>\n\n<dependency>\n <groupId>org.slf4j</groupId>\n <artifactId>slf4j-api</artifactId>\n <version>${slf4j.version}</version>\n</dependency>\n\n<dependency>\n <groupId>org.slf4j</groupId>\n <artifactId>slf4j-log4j12</artifactId>\n <version>${slf4j.version}</version>\n</dependency>\n\n\n2. 编写代码\n\n在 Flink 作业的代码中,可以使用 org.slf4j.Logger 来记录日志。例如:\n\njava\nimport org.apache.flink.api.common.functions.MapFunction;\nimport org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\npublic class FlinkJob {\n private static final Logger LOG = LoggerFactory.getLogger(FlinkJob.class);\n\n public static void main(String[] args) throws Exception {\n StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();\n\n // Flink 作业逻辑\n env.fromElements("Hello", "Flink")\n .map(new MapFunction<String, String>() {\n @Override\n public String map(String value) throws Exception {\n LOG.info("Processing value: {}", value);\n return value.toUpperCase();\n }\n })\n .print();\n\n env.execute("Flink Job");\n }\n}\n\n\n在上面的例子中,使用 LOG.info() 方法来记录日志。日志消息中可以使用占位符 {} 来引用变量。\n\n3. 配置日志输出\n\n最后,需要在 log4j.properties 或 log4j.xml 配置文件中,指定日志的输出格式和目标。例如:\n\nproperties\n# log4j.properties\n\n# 输出日志到控制台\nlog4j.rootLogger=INFO, Console\n\n# 定义控制台输出\nlog4j.appender.Console=org.apache.log4j.ConsoleAppender\nlog4j.appender.Console.layout=org.apache.log4j.PatternLayout\nlog4j.appender.Console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c{1}:%L - %m%n\n\n\n上述配置将日志输出到控制台,并设置了日志的格式。\n\n4. 运行作业\n\n当运行 Flink 作业时,会在控制台输出日志信息。\n\n注意:\n\n* 如果使用 log4j,需要将 log4j 的配置文件放在 Flink 的 classpath 中。\n* 如果使用 slf4j,需要将 slf4j 的配置文件放在 Flink 的 classpath 中,并确保 slf4j 的依赖项已经包含了 log4j 或其他日志框架的桥接库。\n\n通过以上步骤,就可以在 Flink 中使用 log4j 或 slf4j 记录和打印运行日志,方便调试和排查问题。


原文地址: https://www.cveoy.top/t/topic/pHZc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录