у нас есть веб-приложение java, которое работает на пристани, и приложение упаковано как образ докера и работает на AWS ECS. Мы хотим вывести журналы приложения через драйвер журнала докера. Когда приложение упаковано через Dockerfile, оно выполняет что-то вроде следующего:
FROM .....
# Prepare the environment variables
....
# Install necessary packages
....
CMD ["/usr/bin/docker_start.sh"]
, а содержимое docker_start.sh
выглядит примерно так:
# Start jetty server as a background process
....
# Self evaluation after the jetty server is started
....
tail -F /var/logs/my_application/application.log
Приложение написано на Javaи записывает логи через logback с RollingFileAppender
. Приложение определяется следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/logs/my_application/application.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>/var/logs/my_application/application.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<!-- keep 30 days' worth of history capped at 3GB total size -->
<maxHistory>30</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
Проблема заключается в том, что после развертывания приложения в AWS ECS журналы приложений вначале работают нормально и могут исчезнуть через несколько часов. Когда мы регистрируемся в контейнере и ps
процесс, процесс tail -F /var/logs/my_application/application.log
все еще там, но кажется, что он больше не работает.
Я прочитал некоторые связанные вопросы, такие как:
По моему мнению, наша проблема может быть похожа на эти вопросы, но детали разные. Я не совсем уверен, как отнести их решения к моим. Было бы полезно, если бы кто-то мог указать на проблему и дать подсказки о том, как ее решить. Большое спасибо!