美好的一天,
我正在AWS EMR 5.20上运行Flink(v1.7.1)流作业,并且我希望在S3中拥有我的作业的所有task_managers和job_manager的日志。 Flink团队建议使用Logback。 由于这是一项长期的工作,因此我希望日志为:
我尝试过的是:
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.file}</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>%d{yyyy-MM-dd HH}.%i.log</fileNamePattern> <maxFileSize>30MB</maxFileSize> <maxHistory>3</maxHistory> <totalSizeCap>50MB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{60} %X{sourceThread} - %msg%n</pattern> </encoder> </appender>
到目前为止,我得到/观察到的是:
简而言之,在我获得的3个要求中,我只能选择(1)或(2&3)。
您能帮我吗?
感谢和问候,
Averell
答案 0 :(得分:0)
据我所知,EMR支持的将日志自动备份到S3只能在工作结束时使用,因为它基于AWS最初为批处理作业实现的后台日志加载器。也许有一种方法可以使它用于滚动日志,但我从未听说过。
我自己还没有尝试过,但是如果需要的话,我可能会尝试以下操作:
S3fs
在EC2实例上安装S3。 logrotate
(或同等功能)以自动复制和清理日志文件。您可以使用引导操作来自动设置以上所有条件。
如果S3fs
给您带来了问题,那么您可以做更多的脚本编写,直接使用aws s3
命令来同步日志,然后在复制日志后将其删除。