Como usar o Logback para gravar logs em um armazenamento persistente personalizado
Observação
Os planos Básico, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de desativação de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira o anúncio de desativação dos Aplicativos Spring do Azure.
O plano consumo e dedicado Standard será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira Migrar o plano dedicado e consumo Standard dos Aplicativos Spring do Azure para os Aplicativos de Contêiner do Azure.
Este artigo se aplica a:✅ Java ❎ C#
Este artigo se aplica a:✅ Básico/Standard ✅ Enterprise
Este artigo mostra como carregar o Logback e gravar logs em armazenamento persistente personalizado no Azure Spring Apps.
Observação
Quando um arquivo no classpath do aplicativo tiver um dos seguintes nomes, o Spring Boot vai carregá-lo automaticamente na configuração padrão para Logback:
- logback-spring.xml
- logback.xml
- logback-spring.groovy
- logback.groovy
Pré-requisitos
- Um recurso de armazenamento existente limitado a uma instância do Azure Spring Apps. Se você precisar associar um recurso de armazenamento, veja Como habilitar seu próprio armazenamento persistente no Azure Spring Apps.
- A dependência do Logback incluída no seu aplicativo. Para obter mais informações sobre o Logback, consulte Um guia para Logback.
- A extensão do Azure Spring Apps da CLI do Azure
Editar a configuração do Logback para gravar logs em um caminho específico
Você pode definir o caminho onde os logs serão gravados usando o arquivo de exemplo 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>
No exemplo anterior, há dois espaços reservados chamados {LOGS}
no caminho para gravar os logs do aplicativo. Um valor precisa ser atribuído à variável de ambiente LOGS
para que o log seja gravado no console e no armazenamento persistente.
Use o CLI do Azure para criar e implantar um novo aplicativo com o Logback no armazenamento persistente
Use o comando a seguir para criar um aplicativo no Azure Spring Apps com o armazenamento persistente habilitado e a variável de ambiente definida:
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
Observação
O valor da variável de ambiente
LOGS
pode ser o mesmo que, ou um subdiretório domountPath
.Aqui está um exemplo do arquivo JSON que é passado para o parâmetro
--persistent-storage
no comando criar. Nesse exemplo, é passado o mesmo valor para a variável de ambiente no comando da CLI acima e na propriedademountPath
abaixo:{ "customPersistentDisks": [ { "storageName": "<Storage-Resource-Name>", "customPersistentDiskProperties": { "type": "AzureFileVolume", "shareName": "<Azure-File-Share-Name>", "mountPath": "/byos/logs", "readOnly": false } } ] }
Use o seguinte comando para implantar seu aplicativo:
az spring app deploy \ --resource-group <resource-group-name> \ --name <app-name> \ --service <spring-instance-name> \ --artifact-path <path-to-jar-file>
Use o seguinte comando para verificar o log do console do aplicativo:
az spring app logs \ --resource-group <resource-group-name> \ --name <app-name> \ --service <spring-instance-name>
Vá para o recurso de conta do Armazenamento do Microsoft Azure que você limitou e localize o compartilhamento de arquivos do Azure que foi anexado como armazenamento persistente. Neste exemplo, os logs serão gravados no arquivo spring-boot-logger.log na raiz do compartilhamento de arquivos do Azure. Todos os arquivos de log alternados serão armazenados na pasta /archived no compartilhamento de arquivos do Azure.
Opcionalmente, use o comando a seguir para atualizar o caminho ou o armazenamento persistente de um aplicativo existente:
O caminho ou o armazenamento persistente em que os logs são salvos podem ser alterados a qualquer momento. O aplicativo é reiniciado quando alterações são feitas em variáveis de ambiente ou no armazenamento persistente.
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>