Como usar o Logback para gravar logs no armazenamento persistente personalizado
Nota
Os planos Basic, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de aposentadoria de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte o anúncio de aposentadoria do Azure Spring Apps.
O plano de consumo padrão e dedicado 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 obter mais informações, consulte Migrar consumo padrão e plano dedicado do Azure Spring Apps para Aplicativos de Contêiner do Azure.
Este artigo aplica-se a:✅ Java ❎ C#
Este artigo aplica-se a:✅ Basic/Standard ✅ Enterprise
Este artigo mostra como carregar Logback e gravar logs no armazenamento persistente personalizado no Azure Spring Apps.
Nota
Quando um arquivo no classpath do aplicativo tem um dos seguintes nomes, o Spring Boot o carregará automaticamente sobre a configuração padrão para Logback:
- logback-spring.xml
- logback.xml
- logback-spring.groovy
- logback.groovy
Pré-requisitos
- Um recurso de armazenamento existente vinculado a uma instância do Azure Spring Apps. Se você precisar vincular um recurso de armazenamento, consulte Como habilitar seu próprio armazenamento persistente no Azure Spring Apps.
- A dependência de Logback incluída em seu aplicativo. Para obter mais informações sobre Logback, consulte Um guia para Logback.
- A extensão do Azure Spring Apps para a CLI do Azure
Editar a configuração de Logback para gravar logs em um caminho específico
Você pode definir o caminho para 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 nomeados {LOGS}
no caminho para gravar os logs do aplicativo. Um valor precisa ser atribuído à variável LOGS
de ambiente para que o log seja gravado no console e no armazenamento persistente.
Usar a CLI do Azure para criar e implantar um novo aplicativo com Logback no armazenamento persistente
Use o seguinte comando para criar um aplicativo no Azure Spring Apps com 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
Nota
O valor da
LOGS
variável de ambiente pode ser o mesmo que ou um subdiretório domountPath
.Aqui está um exemplo do arquivo JSON que é passado para o
--persistent-storage
parâmetro no comando create. Neste exemplo, o mesmo valor é passado para a variável de ambiente no comando CLI acima e namountPath
propriedade 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 da Conta de Armazenamento do Azure que você vinculou 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 girados serão armazenados na pasta /archived em seu compartilhamento de arquivos do Azure.
Opcionalmente, use o seguinte comando para atualizar o caminho ou o armazenamento persistente de um aplicativo existente:
O caminho ou armazenamento persistente onde os logs são salvos pode ser alterado a qualquer momento. O aplicativo será reiniciado quando forem feitas alterações em variáveis de ambiente ou 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>