Использование Logback для записи журналов в пользовательское постоянное хранилище
Примечание.
Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.
Эта статья относится к:✅ Java ❎ C#
Эта статья относится к:✅ Basic/Standard ✅ Enterprise
В этой статье показано, как загрузить Logback и записать журналы в пользовательское постоянное хранилище в Azure Spring Apps.
Примечание.
Если файл в подкаталоге классов приложения имеет одно из следующих имен, Spring Boot автоматически загрузит его вместо заданного по умолчанию файла конфигурации для Logback:
- logback-spring.xml
- logback.xml
- logback-spring.groovy
- logback.groovy
Необходимые компоненты
- Существующий ресурс хранилища, привязанный к экземпляру Azure Spring Apps. Сведения о том, как привязать ресурс хранилища, см. в статье Как настроить собственное хранилище для Azure Spring Apps.
- Зависимость Logback, добавленная в приложение. Дополнительные сведения о Logback см. в этом руководстве.
- Расширение Azure Spring Apps для Azure CLI.
Изменение конфигурации 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
.
Создание и развертывание приложения с отправкой Logback его журналов в постоянное хранилище с помощью Azure CLI
Используйте следующую команду, чтобы создать приложение в 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 } } ] }
Чтобы развернуть приложение, выполните следующую команду:
az spring app deploy \ --resource-group <resource-group-name> \ --name <app-name> \ --service <spring-instance-name> \ --artifact-path <path-to-jar-file>
Чтобы проверить журнал консоли приложения, используйте следующую команду:
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.
При необходимости используйте следующую команду, чтобы изменить путь или постоянное хранилище существующего приложения:
Путь или постоянное хранилище, в котором сохраняются журналы, можно изменить в любое время. Приложение перезапустится при внесении изменений в переменные среды или расположение постоянного хранилища.
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>