Logback gebruiken om logboeken naar aangepaste permanente opslag te schrijven

Notitie

Azure Spring Apps is de nieuwe naam voor de Azure Spring Cloud-service. Hoewel de service een nieuwe naam heeft, ziet u de oude naam op sommige plaatsen terwijl we werken aan het bijwerken van assets, zoals schermopnamen, video's en diagrammen.

Dit artikel is van toepassing op: ✔️ Java ❌ C#

Dit artikel is van toepassing op: ✔️ Basic/Standard ✔️ Enterprise

In dit artikel leest u hoe u logback laadt en logboeken schrijft naar aangepaste permanente opslag in Azure Spring Apps.

Notitie

Wanneer een bestand in het klassepad van de toepassing een van de volgende namen heeft, wordt dit automatisch geladen via de standaardconfiguratie voor Logback:

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

Vereisten

De Logback-configuratie bewerken om logboeken naar een specifiek pad te schrijven

U kunt het pad instellen op de locatie waar logboeken worden geschreven met behulp van het logback-spring.xml voorbeeldbestand.

<?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>

In het voorgaande voorbeeld zijn er twee tijdelijke aanduidingen met de naam {LOGS} in het pad voor het schrijven van de logboeken van de toepassing. Er moet een waarde worden toegewezen aan de omgevingsvariabele LOGS om het logboek naar zowel de console als uw permanente opslag te schrijven.

De Azure CLI gebruiken om een nieuwe app te maken en te implementeren met Logback op permanente opslag

  1. Gebruik de volgende opdracht om een toepassing te maken in Azure Spring Apps waarvoor permanente opslag is ingeschakeld en de omgevingsvariabeleset:

    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
    

    Notitie

    De waarde van de LOGS omgevingsvariabele kan hetzelfde zijn als, of een submap van de mountPath.

    Hier volgt een voorbeeld van het JSON-bestand dat wordt doorgegeven aan de --persistent-storage parameter in de opdracht maken. In dit voorbeeld wordt dezelfde waarde doorgegeven voor de omgevingsvariabele in de BOVENSTAANDe CLI-opdracht en in de mountPath onderstaande eigenschap:

    {
        "customPersistentDisks": [
            {
                "storageName": "<Storage-Resource-Name>",
                "customPersistentDiskProperties": {
                    "type": "AzureFileVolume",
                    "shareName": "<Azure-File-Share-Name>",
                    "mountPath": "/byos/logs",
                    "readOnly": false
                }
            }
        ]
    }
    
  2. Gebruik de volgende opdracht om uw toepassing te implementeren:

    az spring app deploy \
         --resource-group <resource-group-name> \
         --name <app-name> \
         --service <spring-instance-name> \
         --artifact-path <path-to-jar-file>
    
  3. Gebruik de volgende opdracht om het consolelogboek van uw toepassing te controleren:

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

    Ga naar de Azure Storage-accountresource die u hebt gebonden en zoek de Azure-bestandsshare die als permanente opslag is gekoppeld. In dit voorbeeld worden de logboeken naar het spring-boot-logger.log-bestand geschreven in de hoofdmap van uw Azure-bestandsshare. Alle gedraaide logboekbestanden worden opgeslagen in de map /archived in uw Azure-bestandsshare.

  4. Gebruik eventueel de volgende opdracht om het pad of de permanente opslag van een bestaande app bij te werken:

    Het pad of de permanente opslag waar de logboeken worden opgeslagen, kunnen op elk gewenst moment worden gewijzigd. De toepassing wordt opnieuw opgestart wanneer wijzigingen worden aangebracht in omgevingsvariabelen of permanente opslag.

    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>
    

Volgende stappen