Использование Logback для записи журналов в пользовательское постоянное хранилище

Примечание

Планы Basic, Standardи Enterprise вступили в период вывода из обращения 17 марта 2025 года. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.

План стандартного потребления и выделенный план вошли в период вывода из эксплуатации 30 сентября 2024 года, с полным завершением работы к концу марта 2025 года. Для получения дополнительной информации см. статью «Перенос тарифного плана потребления и выделенного плана Azure Spring Apps Standard в Azure Container Apps».

Эта статья относится к:✅ Java ❎ C#

Эта статья относится к:✅ Basic/Standard ✅ Enterprise

В этой статье показано, как загрузить Logback и записать журналы в пользовательское постоянное хранилище в Azure Spring Apps.

Примечание

Если файл в подкаталоге классов приложения имеет одно из следующих имен, Spring Boot автоматически загрузит его вместо заданного по умолчанию файла конфигурации для Logback:

  • logback-spring.xml
  • logback.xml
  • logback-spring.groovy
  • logback.groovy

Предварительные условия

Измените конфигурацию Logback для записи журналов в указанный путь

Вы можете задать путь для записи логов, используя пример файла logback-spring.xml.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="Console"
              class="ch.qos.logback.core.ConsoleAppender">
        <!-- please feel free to customize the log layout -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
            </Pattern>
        </layout>
    </appender>

    <appender name="RollingFile"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 'LOGS' here is a value to be read from the application's environment variable -->
        <file>${LOGS}/spring-boot-logger.log</file>
        <!-- please feel free to customize the log layout pattern -->
        <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
        </encoder>

        <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily and when the file reaches 10 MegaBytes -->
            <fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <!-- LOG everything at the INFO level -->
    <root level="info">
        <appender-ref ref="RollingFile" />
        <appender-ref ref="Console" />
    </root>

    <!-- LOG "com.baeldung*" at the TRACE level -->
    <logger name="com.baeldung" level="trace" additivity="false">
        <appender-ref ref="RollingFile" />
        <appender-ref ref="Console" />
    </logger>

</configuration>

В предыдущем примере есть два заполнителя с именем {LOGS} в пути для записи журналов приложения. Чтобы запись журналов велась как в консоль, так и в постоянное хранилище, нужно задать значение переменной среды LOGS.

Используйте Azure CLI для создания и развертывания нового приложения с Logback на постоянном хранилище.

  1. Используйте следующую команду, чтобы создать приложение в Azure Spring Apps с включенным постоянным хранилищем и набором переменных среды:

    az spring app create \
         --resource-group <resource-group-name> \
         --name <app-name> \
         --service <spring-instance-name> \
         --persistent-storage <path-to-json-file> \
         --env LOGS=/byos/logs
    

    Примечание

    Значение переменной среды LOGS может совпадать с каталогом mountPath или быть его подкаталогом.

    Вот пример JSON-файла, который передается в параметр --persistent-storage команды create. В этом примере такое же значение передается для переменной среды в приведенной выше команде CLI и в следующем свойстве mountPath:

    {
        "customPersistentDisks": [
            {
                "storageName": "<Storage-Resource-Name>",
                "customPersistentDiskProperties": {
                    "type": "AzureFileVolume",
                    "shareName": "<Azure-File-Share-Name>",
                    "mountPath": "/byos/logs",
                    "readOnly": false
                }
            }
        ]
    }
    
  2. Чтобы развернуть приложение, выполните следующую команду:

    az spring app deploy \
         --resource-group <resource-group-name> \
         --name <app-name> \
         --service <spring-instance-name> \
         --artifact-path <path-to-jar-file>
    
  3. Чтобы проверить журнал консоли приложения, используйте следующую команду:

    az spring app logs \
         --resource-group <resource-group-name> \
         --name <app-name> \
         --service <spring-instance-name>
    

    Перейдите к ресурсу хранилища Azure, с которым вы связаны, и найдите файловое хранилище Azure, подключенное в качестве постоянного хранилища. В этом примере журналы будут записаны в файл spring-boot-logger.log в корне общей папки Azure. Все поворотные файлы журнала будут храниться в папке /archived в общем доступе файлов Azure.

  4. При необходимости используйте следующую команду, чтобы изменить путь или постоянное хранилище существующего приложения:

    Путь или постоянное хранилище, в котором сохраняются журналы, можно изменить в любое время. Приложение перезапустится при внесении изменений в переменные среды или расположение постоянного хранилища.

    az spring app update \
         --resource-group <resource-group-name> \
         --name <app-name> \
         --service <spring-instance-name> \
         --persistent-storage <path-to-new-json-file> \
         --env LOGS=<new-path>
    

Следующие шаги