Spring boot - журналы Docker

У меня есть приложение java для весенней загрузки, работающее внутри контейнера докеров. Настроил логбэк в приложении. Где я могу получить доступ к созданным журналам? Настроенный путь:

<property name = "LOG_PATH" value = "logs"/>

В настоящее время я проверяю журналы, используя: docker logs containerName --follow Но эта команда возвращает текущие журналы с момента последнего запуска приложения. Как я могу проверить текущие или архивные журналы.

Есть ли способ создать том для журналов входа в систему?

Проверьте это, может помочь: fabianlee.org/2017/03/21/…

Habil 09.11.2018 15:44
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
1
16 051
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте реализовать свой файл-аппендер с помощью

<configuration>
    ...
    <property name = "LOG_PATH" value=/var/app>
    ...
    <appender name = "FILE" class = "ch.qos.logback.core.rolling.RollingFileAppender"> 
        <file>${LOG_PATH}/spring.log</file>
        ...   
    </appender>
</configuration>

А после этого можно запустить следующую команду:

docker exec -it containerName cat /var/app/spring.log > $HOME/spring.log

или сделать громкость с (docker run ... -v "$HOME/app:/var/app")

Если я обновлю свой проект Springboot и обновлю изображение, потеряю ли я файл журнала?

NothingBox 10.05.2020 16:36

Привет, @NothingBox! Прошу прощения за поздний ответ! Если вы не хотите терять журналы и используете команду docker exec для сохранения журналов с помощью '>', как я показал в моем сообщении, тогда вы необходимо изменить операцию с '>' на '>>' (добавить). Но если использовать тома докеров, будьте уверены, все будет хорошо без изменений! ;)

Valentyn Riabukhin 17.05.2020 11:40
Ответ принят как подходящий

Я использую следующий способ: в logback.xml:

<?xml version = "1.0" encoding = "UTF-8"?>

<property name = "LOG_PATH" value = "logs"/>
<timestamp key = "currentTimestamp" datePattern = "yyyy-MM-dd'_'HH"/>

<appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>
            %d{dd-MM-yyyy HH:mm:ss.SSS} %magenta([%thread]) %highlight(%-5level) %logger.%M\(%line\) - %msg%n
        </pattern>
    </encoder>
</appender>

<appender name = "SAVE-TO-FILE"
          class = "ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_PATH}/appName.log</file>
    <encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>
            %d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n
        </Pattern>
    </encoder>

    <rollingPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <!-- the rollover occurs when the active log file reaches the maximum file size before the end of the time period. -->
        <!-- The rollover period is inferred from the smallest date unit value of fileNamePattern -->
        <!-- each file should be at most [maxFileSize], keep [maxHistory] days worth of history, but at most [totalSizeCap] -->
        <maxFileSize>100MB</maxFileSize>
        <fileNamePattern>
            ${LOG_PATH}/archived/appName.%d{yyyy-MM-dd}.%i.log
        </fileNamePattern>
        <maxHistory>30</maxHistory>
        <totalSizeCap>1GB</totalSizeCap>
    </rollingPolicy>
</appender>


<root level = "INFO">
    <appender-ref ref = "STDOUT"/>
    <appender-ref ref = "SAVE-TO-FILE"/>
</root>

В docker run:

docker run --network name-network --restart=unless-stopped --name name-java-container 
--hostname valueOfHostname -d -p 8080:8080 \
-v /data/nameFolderForLogs:/logs \
imageName

Другие вопросы по теме