2010-07-23 24 views
0

J'utilise Jetty 6.1.24 pour développer un service Web et mon code utilise slf4j, comme le fait Jetty, et la journalisation fonctionne correctement. Ce que je veux faire, c'est obtenir la journalisation de débogage de mon code mais pas de Jetty (c'est trop verbeux), mais je ne peux pas l'empêcher de consigner les informations de débogage. Il existe des propriétés système pour définir le mode de débogage (-DDEBUG), mais pas pour désactiver le mode de débogage.Jetty 6 génère toujours des journaux de débogage?

Mon niveau de journal de logback est défini par le script de démarrage en définissant l'on fixe et à son tour propriété système « loglevel » dans mes ressources/logback.xml:

<configuration> 
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> 
    <layout class="ch.qos.logback.classic.PatternLayout"> 
     <Pattern>%d [%thread] %level %logger - %m%n</Pattern> 
    </layout> 
    </appender> 
    <root level="${loglevel:-INFO}"> 
    <appender-ref ref="CONSOLE"/> 
    </root> 
</configuration> 

Jetty est soit générer toujours les journaux de débogage , qui sont ensuite ignorés par l'enregistreur si le débogage n'est pas activé, ou bien il utilise logger.isDebugEnabled() pour définir son mode de débogage. Est-ce que quelqu'un a des idées sur la façon de faire fonctionner cela?

Répondre

4

J'ai eu le même problème après avoir placé le pot de slf4j dans {jetée}/lib/ext.
Je l'ai résolu en plaçant ce fichier dans logback.xml {}/jetée ressources

<configuration> 
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder> 
     <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level - %msg%n</pattern> 
    </encoder> 
    </appender> 
    <root level="info"> 
    <appender-ref ref="STDOUT" /> 
    </root> 
</configuration> 

Notez le ' "info" niveau ='.

Explication:
Dans cette configuration utilise la jetée comme la mise en œuvre de l'enregistreur Slf4jLog.
Slf4jLog, à son tour, délègue à l'implémentation de Logback.
Le fichier journalbackback.xml indique de se déconnecter du niveau de journal et d'utiliser STDOUT.
A partir d'ici, le comportement standard de Jetty est présent, sauf que vous pouvez configurer les niveaux de journalisation via logback.xml
Comme dans la configuration par défaut, vous pouvez utiliser jetty-logging.xml si vous le souhaitez. Bien sûr, vous pouvez contourner les PrintStreams de Jetty et utiliser les Appendices de Logback.
Ici l'écoulement dans le cas où vous utilisez la jetée-logging.xml:

SomeClass --> Slf4JLog --> ConsoleAppender--> STDOUT --> RolloverFileOutputStream 
(Jetty)  (Jetty)   (Logback)  (OS)   (Jetty) 


révisions:
jetée
slf4j 7.2.2 1.6.1
Logback 0.9.26

+0

Un grand merci pour votre réponse. – trojanfoe

0

Voir ici sur la façon de contrôler l'exploitation: http://docs.codehaus.org/display/JETTY/Debugging

+0

Cela ne fonctionne pas j'ai peur - comme je l'ai déjà mentionné, Jetty génère des messages de journal de débogage même lorsque "-DDEBUG" n'est pas spécifié sur la ligne de commande. – trojanfoe

1

L'option -DDEBUG est utilisée que si vous utilisez l'enregistreur StdErr. S'il est configuré pour utiliser la journalisation slf4j (par exemple si vous avez ajouté slf4j sur votre chemin de classe), alors toute la configuration est gérée via votre implémentation de slf4j et les propriétés du système sont ignorées. Ce que vous voulez faire configurer le logback pour désactiver le débogage sur la catégorie de journal de jetée

Quelque chose comme <logger name="org.mortbay.log" level="INFO" />

+0

Cela ressemble à une réponse raisonnable - merci. Je vais y jeter un coup d'oeil et revenir vers vous sous peu. – trojanfoe