53 votes

Exécuter Logback en mode débogage

Je suis récemment passé de log4j à logback et je me demande s'il existe un moyen simple d'exécuter logback en mode débogage, similaire à celui de log4j. log4j.debug propriété. J'ai besoin de voir où il ramasse mon logback.xml de.

Les documents mentionnent l'utilisation d'un StatusPrinter pour afficher l'état interne de logback, mais cela nécessiterait des changements de code.

75voto

Aaron Digulla Points 143830

[EDIT]

Ce problème a été corrigé dans Logback 1.0.4. Vous pouvez maintenant utiliser -Dlogback.debug=true pour activer le débogage de la configuration de logback.

-- Vieille réponse --

Malheureusement, il n'existe aucun moyen d'activer le débogage via une propriété du système. Vous devez utiliser <configuration debug="true"> dans le logback.xml . Veuillez soumettre une demande de fonctionnalité.

6voto

David Roussel Points 2019

C'est comme ça que je fais. Je définis une propriété système appelée 'log.level', puis je la référence dans logback.xml.

Editar: L'inconvénient est que vous DEVEZ avoir 'log.level' toujours activé. La façon dont je gère cela est de vérifier dans ma méthode principale et de le définir sur INFO s'il n'est pas déjà défini, assurez-vous de le faire avant vos premiers appels de journalisation. Ensuite, je peux passer outre sur la ligne de commande, et avoir une valeur par défaut raisonnable.

Voici comment cela se présente 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>

2voto

deve Points 170

Vous pouvez définir la classe de l'auditeur d'état via la propriété système :

java -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener ...

Voir : Manuel du logback

1voto

Andres Points 621

Je n'ai pas pu le faire fonctionner en utilisant la réponse choisie. Cependant, la réponse suivante a fonctionné :

java -Dlogback.configurationFile=/path/to/config-debug.xml com.domain.Main

Il suffit d'ajouter un fichier ( config-debug.xml dans cet exemple) quelque part sur votre serveur et laissez-le là lorsque vous avez besoin de déboguer. Comme l'exemple 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 l'outil mentionné ci-dessus -D paramètre.

Lorsque tout est revenu à la normale, retirez le -D et redémarrez votre application.

Source : Chapitre 3 : Configuration de Logback

-1voto

AixNPanes Points 1

Dans eclipse, vous pouvez avoir plusieurs configurations d'exécution. Ouvrez votre classe principale. Allez dans le menu déroulant Debug de la barre d'outils d'eclipse et sélectionnez Debug configurations. Cliquez sur l'icône Nouvelle configuration de lancement en haut à gauche. Donnez un meilleur nom à votre configuration de lancement. Cliquez sur l'onglet Arguments sous le nom et entrez -Dlog.level=debug ou ce que vous voulez. Cliquez sur Fermer ou Déboguer

Vous pouvez le refaire et spécifier -Dlog.level=warn par exemple.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X