Je suis récemment passé de log4j à logback et je me demande s'il existe un moyen facile d'exécuter logback en mode débogage, similaire à la propriété log4j.debug
De log4j. J'ai besoin de voir d'où il récupère mon logback.xml
.
Les documents mentionnent l'utilisation d'un StatusPrinter
pour imprimer l'état interne de la déconnexion, mais cela nécessiterait des modifications de code.
[MODIFIER]
Cela a été corrigé dans Logback 1.0.4. Vous pouvez maintenant utiliser -Dlogback.debug=true
pour activer le débogage de la configuration de la déconnexion.
- Ancienne réponse -
Malheureusement, il n'existe aucun moyen d'activer le débogage via une propriété System. Vous devez utiliser <configuration debug="true">
dans le logback.xml
. Veuillez soumettre une demande de fonctionnalité.
Voilà comment je le fais. J'ai défini une propriété système appelée 'log.level', puis je la référence dans logback.xml.
Éditer: L'inconvénient est que vous DEVEZ toujours avoir "log.level". La façon dont je gère cela consiste à vérifier ma méthode principale et à la définir sur INFO si elle n'est pas déjà définie, assurez-vous de le faire avant de connecter les appels pour la première fois. Ensuite, je peux remplacer la ligne de commande et avoir une valeur par défaut raisonnable.
Voici à quoi cela ressemble dans mon logback.xml:
<configuration>
<logger name="com.mycompany.project" level="${log.level}" />
<logger name="httpclient" level="WARN" />
<logger name="org.Apache" level="WARN" />
<logger name="org.hibernate" level="WARN" />
<logger name="org.hibernate.cfg.AnnotationBinder" level="WARN" />
<logger name="org.hibernate.cfg.annotations" level="WARN" />
<logger name="org.quartz" level="WARN" />
<logger name="org.springframework" level="WARN" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-16thread] %-5level %-35.35logger{30} - %msg%n</pattern>
</encoder>
</appender>
<root level="${log.level:-INFO}">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Vous pouvez définir la classe d'écouteur d'état via la propriété système:
Java -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener ...
Voir: Manuel de déconnexion
Je ne pouvais pas le faire fonctionner en utilisant la réponse choisie. Cependant, les éléments suivants ont fonctionné:
Java -Dlogback.configurationFile=/path/to/config-debug.xml com.domain.Main
Ajoutez simplement un fichier (config-debug.xml
Dans cet exemple) quelque part sur votre serveur et laissez-le là lorsque vous devez déboguer. Comme le suivant.
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{dd-MMM-yyyy HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Exécutez votre application en utilisant le paramètre -D
Mentionné ci-dessus.
Lorsque les choses reviennent à la normale, supprimez le paramètre -D
Et redémarrez votre application.