Partilhar via


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

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

  1. 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 do mountPath.

    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 na mountPath propriedade abaixo:

    {
        "customPersistentDisks": [
            {
                "storageName": "<Storage-Resource-Name>",
                "customPersistentDiskProperties": {
                    "type": "AzureFileVolume",
                    "shareName": "<Azure-File-Share-Name>",
                    "mountPath": "/byos/logs",
                    "readOnly": false
                }
            }
        ]
    }
    
  2. 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>
    
  3. 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.

  4. 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>
    

Próximos passos