如何在Log4j中启用Logger.debug()

Har*_*aji 47 java log4j

在尝试执行以下行时,只显示最后两个语句("这里有一些错误"和"这里有一些致命")并且前三个语句没有显示.我刚刚开始学习这个主题,任何人都可以告诉为什么会这样?

    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");
Run Code Online (Sandbox Code Playgroud)

log4j.property有

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
Run Code Online (Sandbox Code Playgroud)

Tho*_*zer 61

您可能在项目的某处有一个log4j.properties文件.在该文件中,您可以配置所需的调试输出级别.看这个例子:

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
Run Code Online (Sandbox Code Playgroud)

第一行将根记录器的日志级别设置为"info",即只有info,warn,error和fatal将打印到控制台(这是稍后定义的appender).

最后一行设置com.example的记录器.*(如果你得到你的记录器LogFactory.getLogger(getClass()))将处于调试级别,即也将打印调试.

  • 它也可能是一个log4j.xml文件,它是一个XML文件,用于代替Java Properties文件. (4认同)

Ste*_*n C 52

这是一个快速的单行黑客,我偶尔会用它来暂时打开JUnit测试中的调试日志记录:

Logger.getRootLogger().setLevel(Level.DEBUG);
Run Code Online (Sandbox Code Playgroud)

  • 快速下载而无需导入:`org.apache.log4j.Logger.getRootLogger().setLevel(org.apache.log4j.Level.DEBUG);` (10认同)

yaw*_*awn 9

将命名的文件log4j.xml放入类路径中.内容是例如

<?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>
Run Code Online (Sandbox Code Playgroud)

  • 他已经有了一个属性文件.我相信最新版本的log4j,建议您使用XML,但不要求您这样做 - 可以使用属性文件. (2认同)

rsp*_*rsp 6

这可能是因为您的log4j配置设置为ERROR.查找log4j.properties文件,其中包含以下内容:

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
Run Code Online (Sandbox Code Playgroud)

rootLogger被设置为ERROR使用此级别CONSOLE的appender.

请注意,某些appender(如控制台appender)也有一个Threshold可用于覆盖该rootLoggers级别的属性.在这种情况下,您需要检查两者.


Gle*_*nce 5

如果您是因为使用Apache Commons日志和log4j日志而来的,而log4j不能按预期工作,则请检查运行时类路径中是否确实有log4j.jar。那个让我感到困惑了一段时间。现在,我已经在我的开发环境中配置了运行程序,以在Java命令行中包含-Dlog4j.debug,因此我始终可以看到Log4j已正确初始化