Log4J API 不打印 java 程序中的消息



我正在尝试在我的java项目中实现Log4J API。为此,我创建了一个属性,如下图所示(以黄色突出显示(:项目结构图像

这些是我在文件中设置的属性:

# TRACE < DEBUG < INFO < WARN < FATAL
log4j.rootLogger=TRACE, DEBUG, INFO, file
# Console
# log4j.appender.toConsole=org.apache.log4j.ConsoleAppender
# log4j.appender.toConsole.layout=org.apache.log4j.PatternLayout
# log4j.appender.toConsole.layout.ConversionPatter=%d{HH:mm:ss} %5p [%t] - $c.%M - %m%n
# Redirecting log messages to console
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=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

我在类中声明了 LOGGER 对象,如下所示:

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
public class Credits{
    Logger LOGGER = null;
    public Credits(String sources) {
        LOGGER = Logger.getLogger(ChunkRecon.class.getName());
        LOGGER.setLevel(Level.DEBUG);
        String  creditNames = "select tablename, creditNumbers, credit_type from schema.table where credit_type in ("sources")";
        LOGGER.debug("This is a debug message");
        system.out.println("This message is from println");
    }
}

在输出中,我看到来自 sysout 的消息:This message is from println但没有调试消息。

谁能让我知道我在这里犯了什么错误?

尝试将记录器属性重命名为 log4j.properties,并检查它是否在类路径中。rootLogger的另一个问题,请参阅此处的说明

此外,记录器通常用作静态变量。例如:

public class Credits {
    private static final Logger logger = Logger.getLogger(Credits.class);
    public Credits(String sources) {
        logger.setLevel(Level.DEBUG);
        logger.debug("This is a debug message");
        System.out.println("This message is from println");
    }
}

log4j.properties

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=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

您的log4j.rootLogger声明似乎不正确。尝试作为 -

log4j.rootLogger=TRACE,stdout,file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.file=org.apache.log4j.RollingFileAppender

如果您只想在控制台上显示日志,请完全删除文件日志记录。

log4j.rootLogger=TRACE,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender

请参阅从 JavaDoc 配置记录器一节。
配置根记录器的语法为:

log4j.rootLogger=[level], appenderName, appenderName, ...

相关内容

最新更新