Pergunta

Recentemente, mudei de Log4J para Logback e estou me perguntando se existe uma maneira fácil de executar o logback no modo de depuração, semelhante ao Log4J's log4j.debug propriedade. Eu preciso ver onde está pegando meu logback.xml a partir de.

Os documentos mencionam usando um StatusPrinter Para imprimir o status interno do Logback, mas isso exigiria alterações de código.

Foi útil?

Solução

EDITAR

Isso foi corrigido no logback 1.0.4. Agora você pode usar -Dlogback.debug=true Para ativar a depuração da configuração de logback.

-Resposta antiga-

Infelizmente, não há como ativar a depuração por meio de uma propriedade do sistema. Você tem que usar <configuration debug="true"> no logback.xml. Envie uma solicitação de recurso.

Outras dicas

É assim que eu faço isso. Defino uma propriedade do sistema chamada 'log.level', depois a referência no logback.xml.

Editar: A desvantagem é que você deve ter 'Log.level' sempre definido. A maneira como lido com isso é verificar meu método principal e defini -lo como informações, se ainda não estiver definido, faça isso antes de fazer as chamadas de registro. Em seguida, posso substituir a linha de comando e ter um padrão sensato.

Aqui está como fica no meu 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>

Não pude fazer funcionar usando a resposta escolhida. No entanto, o seguinte funcionou:

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

Basta adicionar um arquivo (config-debug.xml Neste exemplo) em algum lugar do seu servidor e deixe -o lá quando você precisar depurar. Como o seguinte.

<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>

Execute seu aplicativo usando o mencionado acima -D parâmetro.

Quando as coisas voltarem ao normal, remova o -D parâmetro e reinicie seu aplicativo.

Fonte: Capítulo 3: Configuração de logback

Você pode definir a classe de ouvinte de status via propriedade do sistema:

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

Ver: Manual de logback

No Eclipse, você pode ter várias configurações de execução. Abra sua classe principal. Vá para a depuração suspensa na barra de ferramentas Eclipse e selecione configurações de depuração. Clique no novo ícone de configuração de lançamento no canto superior esquerdo. Dê à sua configuração de lançamento um nome melhor. Clique na guia Argumentos sob o nome e digite -dlog.level = depuração ou o que você quiser. Clique em Fechar ou depurar

Você pode fazer isso novamente e especificar -dlog.level = aviso, por exemplo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top