开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

问大佬们,有遇到算子里的日志打印不出来的问题吗?代码里写在算子外的可以正常打印。看了flink官网关

问大佬们,有遇到算子里的日志打印不出来的问题吗?代码里写在算子外的可以正常打印。看了flink官网关于日志的输出,比较简单,虽然不妨碍任务的执行,但是一直没找到问题在哪1368问.png

展开
收起
游客3oewgrzrf6o5c 2022-07-12 16:02:59 571 0
1 条回答
写回答
取消 提交回答
  • 全栈JAVA领域创作者

    如果您在算子中的代码中打印日志,但是日志没有打印出来,可能是因为您的日志级别设置不正确。具体来说,如果您的日志级别设置为INFO或更高级别,您的日志可能不会打印出来。因此,您需要检查您的日志级别设置,确保其设置为DEBUG或更低级别,以便打印出算子中的日志。
    例如,以下代码演示了如何在算子中打印日志:

    public class MyOperator extends RichOperatorBase<MyInput, MyOutput> {
    
        private static final Logger logger = LoggerFactory.getLogger(MyOperator.class);
    
        @Override
        public void open(Configuration parameters) throws Exception {
            // 打印日志
            logger.info("MyOperator opened");
        }
    
        @Override
        public void processElement(MyInput value, Context context) throws Exception {
            // 处理数据
            MyOutput output = // 处理数据的结果
            // 打印日志
            logger.debug("MyOperator processed {}", value);
            // 输出结果
            outputWriter.write(output);
        }
    
        @Override
        public void close() throws Exception {
            // 打印日志
            logger.info("MyOperator closed");
        }
    }
    

    在上面的代码中,我们使用LoggerFactory.getLogger()方法获取一个Logger对象,并使用Logger.debug()方法打印日志。需要注意的是,我们使用Logger.debug()方法而不是Logger.info()方法,以确保日志可以打印出来。
    需要注意的是,如果您的日志级别设置为INFO或更高级别,您的日志可能不会打印出来。因此,您需要检查您的日志级别设置,确保其设置为DEBUG或更低级别,以便打印出算子中的日志。
    此外,您还可以使用System.out.println()等方法来打印日志,以便在控制台中查看日志信息。例如,以下代码演示了如何使用System.out.println()方法来打印日志:

    public class MyOperator extends RichOperatorBase<MyInput, MyOutput> {
    
        private static final Logger logger = LoggerFactory.getLogger(MyOperator.class);
    
        @Override
        public void open(Configuration parameters) throws Exception {
            // 打印日志
            System.out.println("MyOperator opened");
        }
    
        @Override
        public void processElement(MyInput value, Context context) throws Exception {
            // 处理数据
            MyOutput output = // 处理数据的结果
            // 打印日志
            System.out.println("MyOperator processed {}", value);
            // 输出结果
            outputWriter.write(output);
        }
    
        @Override
        public void close() throws Exception {
            // 打印日志
            System.out.println("MyOperator closed");
        }
    }
    

    在上面的代码中,我们使用System.out.println()方法来打印日志。需要注意的是,我们使用System.out.println()方法而不是Logger.debug()方法,以确保日志可以打印出来。
    需要注意的是,如果您的日志级别设置为INFO或更高级别,您的日志可能不会打印出来。因此,您需要检查您的日志级别设置,确保其设置为DEBUG或更低级别,以便打印出算子中的日志。

    2023-08-12 20:08:45
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载