Journalisation avec le SDK Azure pour Java et Logback
Cet article fournit une vue d’ensemble de l’ajout de la journalisation à l’aide de Logback à des applications qui utilisent le Kit de développement logiciel (SDK) Azure pour Java. Comme mentionné dans Configurer la journalisation dans le kit de développement logiciel (SDK) Azure pour Java, toutes les bibliothèques clientes Azure se connectent via SLF4J, afin de pouvoir utiliser des frameworks de journalisation tels que logback.
Pour activer la journalisation Logback, vous devez effectuer deux opérations :
- Inclure la bibliothèque Logback en tant que dépendance,
- Créez un fichier appelé logback.xml dans le répertoire de projet /src/main/ resources.
Pour plus d’informations sur la configuration de Logback, consultez Configuration Logback dans la documentation Logback.
Ajouter la dépendance Maven
Pour ajouter la dépendance Maven, incluez le code XML suivant dans le fichier pom.xml du projet. Remplacez le numéro de version 1.2.3
par le dernier numéro de version publié affiché dans la page module Logback Classic.
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
Ajouter logback.xml à votre projet
Logback est l’un des frameworks de journalisation populaires. Pour activer la journalisation logback, créez un fichier appelé logback.xml dans le répertoire ./src/main/resources répertoire de votre projet. Ce fichier contient les configurations de journalisation pour personnaliser vos besoins de journalisation. Pour plus d’informations sur la configuration de logback.xml, consultez Configuration de Logback dans la documentation de Logback.
Écriture dans le journal de la console
Vous pouvez créer une configuration logback pour vous connecter à la console, comme illustré dans l’exemple suivant. Cet exemple est configuré pour journaliser tous les événements de journalisation qui sont au niveau INFO ou supérieur, où qu’ils proviennent.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %blue(%logger{100}): %msg%n%throwable
</Pattern>
</layout>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Consigner les erreurs Azure principales
L’exemple de configuration suivant est similaire à la configuration précédente, mais il réduit le niveau auquel la journalisation provient de toutes les classes empaquetées com.azure.core
(y compris les sous-packages). De cette façon, tout le niveau INFO et supérieur est journalisé, à l’exception de com.azure.core
, où seul le niveau ERROR et supérieur est enregistré. Par exemple, vous pouvez utiliser cette approche si vous trouvez le code dans com.azure.core
trop bruyant. Ce type de configuration peut également aller de deux manières. Par exemple, si vous souhaitez obtenir plus d’informations de débogage à partir de classes dans com.azure.core
, vous pouvez modifier ce paramètre en DEBUG.
Il est possible d’avoir un contrôle précis sur la journalisation des classes spécifiques ou des packages spécifiques. Comme indiqué ici, com.azure.core
contrôle la sortie de toutes les classes principales, mais vous pouvez également utiliser com.azure.security.keyvault
ou équivalent pour contrôler la sortie selon les circonstances les plus informatives dans le contexte de l’application en cours d’exécution.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%message%n</pattern>
</encoder>
</appender>
<logger name="com.azure.core" level="ERROR" />
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Consigner dans un fichier avec rotation des journaux activée
Les exemples précédents effectuent la journalisation dans la console, qui n’est normalement pas l’emplacement privilégié pour les journaux. Utilisez la configuration suivante pour effectuer la journalisation dans un fichier, avec restauration toutes les heures et archivage au format gzip :
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOGS" value="./logs" />
<appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS}/spring-boot-logger.log</file>
<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 hourly and gzip logs -->
<fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd-HH}.log.gz</fileNamePattern>
</rollingPolicy>
</appender>
<!-- LOG everything at INFO level -->
<root level="INFO">
<appender-ref ref="RollingFile" />
</root>
</configuration>
Applications de Spring
L’infrastructure Spring fonctionne en lisant le fichier Spring application.properties pour différentes configurations, notamment la configuration de journalisation. Toutefois, il est possible de configurer l’application Spring pour lire les configurations logback à partir de n’importe quel fichier. Pour ce faire, configurez la propriété logging.config
pour qu’elle pointe vers le fichier de configuration logback.xml en ajoutant la ligne suivante dans votre fichier Spring /src/main/resources/application.properties :
logging.config=classpath:logback.xml
Étapes suivantes
Cet article a abordé la configuration de Logback et comment faire en sorte que le Kit de développement logiciel (SDK) Azure pour Java l’utilise pour la journalisation. Étant donné que le kit de développement logiciel Azure pour Java fonctionne avec tous les frameworks de journalisation SLF4J, consultez le manuel de l’utilisateur SLF4J pour plus d’informations. Si vous utilisez Logback, il existe également une grande quantité d’instructions de configuration sur son site web. Pour plus d’informations, consultez Configuration de Logback dans la documentation de Logback.
Après avoir masterisé la journalisation, examinez les intégrations qu’Azure propose dans des frameworks tels que Spring et MicroProfile.