文档首页/ MapReduce服务 MRS/ 开发指南(普通版_3.x)/ Flink开发指南(安全模式)/ Flink应用开发常见问题/ 如何查看System.out.println打印的调试信息或将调试信息输出至指定文件
更新时间:2024-10-23 GMT+08:00

如何查看System.out.println打印的调试信息或将调试信息输出至指定文件

问题

Flink业务代码中添加了System.out.println调试信息打印,该如何查看此调试日志?避免与运行日志混在一起打印,如何将业务日志单独输出至指定文件?

回答

Flink所有的运行日志打印都会打印至Yarn的本地目录下,默认所有Log都会输出至Yarn container本地目录下taskmanager.log,所有调用System.out打印都会输出taskmanager.out文件。查看方式如下:

  1. 进入Flink原生Web页面。
  2. 在左侧导航栏单击“Task Managers”,可在“Logs”或“Stdout”页签查看日志信息。
    图1 查看日志信息

配置业务日志与TaskManager运行日志独立打印:

若配置业务日志与TaskManager运行日志分开打印后,业务日志不输出至taskmanager.log,无法使用Web页面进行查看相应日志信息。

  1. 修改客户端的配置文件“conf/logback.xml”,在文件中添加如下日志配置信息,加粗标注部分根据需要进行修改。
        <appender name="TEST" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>/path/test.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
                <fileNamePattern>/path/test.log.%i</fileNamePattern>
                <minIndex>1</minIndex>
                <maxIndex>20</maxIndex>
            </rollingPolicy>
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <maxFileSize>20MB</maxFileSize>
            </triggeringPolicy>
            <encoder>
                <pattern>%d{"yyyy-MM-dd HH:mm:ss,SSS"} | %m %n</pattern>
            </encoder>
        </appender>
    
        <logger name="com.huawei.bigdata.flink.examples" additivity="false">
            <level value="INFO"/>
            <appender-ref ref="TEST"/>
        </logger>
  2. 重新启动yarn-session.sh,提交任务。

自定义日志若指定了路径<file>/path/test.log</file>,需确保任务运行所使用的用户(flink-conf.yaml配置用户)有权限对该目录进行读写操作。