Pour diagnostiquer les échecs de livraison de messages ou le retard des consommateurs dans ApsaraMQ for RocketMQ, consultez les journaux du client. Le SDK pour Java génère automatiquement des fichiers journaux qui capturent les exceptions d'exécution, les événements de connexion et les détails du cycle de vie des messages.
Nous vous recommandons d'utiliser les dernières versions du SDK RocketMQ 5.x. Ces SDK sont entièrement compatibles avec les brokers ApsaraMQ for RocketMQ 5.x et offrent davantage de fonctions ainsi que des fonctionnalités améliorées. Pour plus d'informations, consultez le Guide des versions du SDK Java.
Alibaba Cloud assure uniquement la maintenance des SDK clients RocketMQ 3.x, 4.x et TCP. Nous vous recommandons de les utiliser uniquement pour les activités existantes.
Paramètres par défaut des journaux
Le client génère automatiquement des fichiers journaux avec les valeurs par défaut suivantes :
| Paramètre | Valeur par défaut | Personnalisable | Propriété système |
|---|---|---|---|
| Chemin de stockage des journaux | /{user.home}/logs/ons.log |
Oui | ons.client.logRoot |
| Niveau de journalisation | INFO |
Oui | ons.client.logLevel |
| Nombre maximal de fichiers journaux conservés | 10 |
Oui | ons.client.logFileMaxIndex |
| Taille du fichier journal | 64 MB |
Non | N/A |
Dans le chemin par défaut, {user.home} correspond au répertoire personnel du compte exécutant le processus Java.
Niveaux de journalisation
Les niveaux de journalisation valides sont les suivants :
| Niveau |
|---|
ERROR |
WARN |
INFO |
DEBUG |
Activation de l'impression des journaux
Le SDK pour Java utilise l'API SLF4J pour la journalisation. La configuration dépend de la version de votre SDK.
SDK pour Java 1.7.8.Final ou version ultérieure
Aucune configuration n'est requise. Ces versions intègrent un framework de journalisation qui gère automatiquement la sortie des journaux.
Versions du SDK pour Java antérieures à 1.7.8.Final
Ajoutez une dépendance vers un framework de journalisation pris en charge (Log4j ou Logback) à votre fichier pom.xml ou .lib.
Le SDK pour Java 1.7.8.Final et les versions antérieures prennent uniquement en charge Log4j et Logback. Log4j2 n'est pas pris en charge.
-
Si votre application inclut à la fois Log4j et Logback, des conflits de journalisation empêchent l'impression correcte des journaux du client. Utilisez un seul framework de journalisation. Pour identifier les conflits, exécutez :
mvn clean dependency:tree | grep log Pour éviter ces limitations, mettez à niveau vers la dernière version du SDK pour Java.
Personnalisation des journaux du client
La configuration personnalisée des journaux nécessite le SDK pour Java 1.2.5 ou une version ultérieure.
Transmettez les propriétés système Java via l'indicateur -D dans votre script de démarrage ou dans les options de machine virtuelle (VM) de votre environnement de développement intégré (IDE).
Propriétés disponibles
| Propriété | Description | Valeurs valides |
|---|---|---|
ons.client.logRoot |
Répertoire des fichiers journaux | Tout chemin accessible en écriture sur votre système |
ons.client.logLevel |
Niveau de journalisation minimal | ERROR, WARN, INFO, DEBUG |
ons.client.logFileMaxIndex |
Nombre maximal de fichiers journaux conservés | De 1 à 100 (la valeur par défaut est 10 si la valeur est hors plage ou invalide) |
Exemples
Linux ou macOS :
-Dons.client.logRoot=/home/admin/logs -Dons.client.logLevel=WARN -Dons.client.logFileMaxIndex=20
Windows :
-Dons.client.logRoot=D:\logs -Dons.client.logLevel=WARN -Dons.client.logFileMaxIndex=20
Remplacez /home/admin/logs et D:\logs par des répertoires réels sur votre système. Le processus de l'application doit disposer d'une autorisation d'écriture sur le chemin spécifié, sinon les journaux ne peuvent pas être imprimés.
Dépannage des problèmes de journalisation
| Symptôme | Cause | Solution |
|---|---|---|
| Aucun fichier journal généré | Dépendance manquante pour le framework de journalisation (SDK antérieur à 1.7.8.Final) | Ajoutez une dépendance Log4j ou Logback à votre fichier pom.xml |
| Sortie de journal vide ou manquante | Présence simultanée de Log4j et Logback dans le classpath | Supprimez l'un des frameworks. Exécutez mvn clean dependency:tree et recherchez log dans la sortie pour identifier les conflits |
| Journaux écrits dans un répertoire inattendu | La valeur par défaut {user.home} est résolue différemment lors de l'exécution |
Définissez explicitement ons.client.logRoot sur un chemin connu |
| Croissance illimitée des fichiers journaux | La rétention par défaut conserve 10 fichiers de 64 Mo chacun (640 Mo au total) | Réduisez la valeur de ons.client.logFileMaxIndex ou configurez une rotation externe des journaux |