如何查看System.out.println打印的调试信息或将调试信息输出至指定文件
问题
Flink业务代码中添加了System.out.println调试信息打印,该如何查看此调试日志?避免与运行日志混在一起打印,如何将业务日志单独输出至指定文件?
回答
Flink所有的运行日志打印都会打印至Yarn的本地目录下,默认所有Log都会输出至Yarn container本地目录下taskmanager.log,所有调用System.out打印都会输出至taskmanager.out文件。查看方式如下:
- 进入Flink原生Web页面。
- 在左侧导航栏单击“Task Managers”,可在“Logs”或“Stdout”页签查看日志信息。
图1 查看日志信息
配置业务日志与TaskManager运行日志独立打印:
若配置业务日志与TaskManager运行日志分开打印后,业务日志不输出至taskmanager.log,无法使用Web页面进行查看相应日志信息。
- 修改客户端的配置文件“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>
- 重新启动yarn-session.sh,提交任务。
自定义日志若指定了路径<file>/path/test.log</file>,需确保任务运行所使用的用户(flink-conf.yaml配置用户)有权限对该目录进行读写操作。