Como activar o Logger.depurar () no Log4j

ao tentar executar as seguintes linhas, apenas as duas últimas declarações são exibidas ("aqui está algum erro "e" aqui está algum FATAL") e as três primeiras declarações não são exibidas.Eu tinha acabado de começar a aprender este tópico, alguém pode dizer por que isso está acontecendo?

    logger.debug("Here is some DEBUG");
    logger.info("Here is some INFO");
    logger.warn("Here is some WARN");
    logger.error("Here is some ERROR");
    logger.fatal("Here is some FATAL");

a propriedade log4j tem

log4j.rootLogger=debug,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%5p] %d{mm:ss}(%F:%M:%L)%n%m%n%n
 42
Author: matt b, 2009-11-04

8 answers

Provavelmente tem um ficheiro log4j. properties algures no projecto. Nesse ficheiro, poderá configurar o nível de resultado da depuração que deseja. Veja este exemplo:

log4j.rootLogger=info, console

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

log4j.logger.com.example=debug

A primeira linha define o nível de registo do root logger como" info", ou seja, apenas informação, aviso, erro e fatal será impresso na consola (que é o appender definido um pouco abaixo disso).

A última linha define o registo para comunicação.exemplo.* (se você obter seus loggers via LogFactory.getLogger(getClass())) estará no nível de depuração, i.e. a depuração também será impressa.

 57
Author: Thomas Lötzer, 2009-11-04 12:32:25
Aqui está um hack rápido de uma linha que ocasionalmente uso para ligar temporariamente o registo de depuração num teste de JUnit.
Logger.getRootLogger().setLevel(Level.DEBUG);
 48
Author: Stephen C, 2010-04-21 09:46:03
Põe um ficheiro chamado log4j.xml no teu Fecho. Conteúdo: p. ex.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ABSOLUTE} %5p %t %c{1}:%L - %m%n"/>
        </layout>
    </appender>

    <root>
        <level value="debug"/>
        <appender-ref ref="stdout"/>
    </root>

</log4j:configuration>
 9
Author: yawn, 2009-11-04 12:32:08

Isto está provavelmente a acontecer porque a sua configuração de log4j está definida em ERROR. Procure um ficheiro de propriedades log4j com o seguinte conteúdo:

log4j.rootLogger=ERROR, CONSOLE

# console logging
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d %-5p %-20.20t %-24c{1}: %m%n

O rootLogger está definido para ERROR Aqui usando um CONSOLE appender.

Note que alguns adicionadores como o appender da consola também têm uma propriedade Threshold que pode ser usada para anular o Nível rootLoggers. Tens de verificar ambos neste caso.

 6
Author: rsp, 2009-11-04 12:36:55

Se você está vindo aqui porque você está usando o registro Apache com log4j e log4j não está funcionando como você espera, então verifique se você realmente tem um log4j.jar no teu classpath em tempo de corrida. Essa deixou-me intrigado durante algum tempo. Configurei agora a execução no meu ambiente dev para incluir - Dlog4j. debug na linha de comandos Java para que possa sempre ver que o Log4j está a ser inicializado correctamente

 4
Author: Glenn Lawrence, 2013-09-04 04:50:59

Tem de ajustar o nível do registo para o mais baixo que quiser mostrar. Por exemplo, se quiser mostrar as mensagens de depuração, terá de definir o nível do registo para depurar.

O manual Apache log4j tem uma secção Sobre configuração.

 3
Author: Thomas Owens, 2009-11-04 12:33:20

Gosto de usar um appender de ficheiros para gravar a informação de registo num ficheiro. O meu ficheiro de propriedades log4j é parecido com isto. Eu prefiro desta forma, uma vez que eu gosto de fazer o registro específico do pacote no caso de eu precisar de vários graus de registro para diferentes pacotes. Apenas um pacote é mencionado no exemplo.

log4j.appender.RCS=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RCS.File.DateFormat='.'yyyy-ww
#define output location
log4j.appender.RCS.File=C:temp/logs/MyService.log
#define the file layout
log4j.appender.RCS.layout=org.apache.log4j.PatternLayout
log4j.appender.RCS.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm a} %5 %c{1}: Line#%L - %m%n
log4j.rootLogger=warn
#Define package specific logging
log4j.logger.MyService=debug, RCS
 3
Author: ChadNC, 2009-11-04 13:12:52

Isto está a acontecer devido ao facto de o nível de registo do seu logger estar definido como 'erro' - portanto, só irá ver mensagens de erro ou acima deste nível em termos de gravidade, por isso é que também vê a mensagem 'fatal'.

Se definir o nível de registo como 'depurar' no seu registo no seu log4j.xml devias ver todas as mensagens.

Dê uma olhada na introdução log4j para explicação.

 2
Author: TomY, 2009-11-04 12:36:44