log4j 没有记录来自某些 java 类 的详细信息

log4j not logging the details coming from some java classes

我正在尝试根据输入参数将项目中的数据记录到文件中。我的项目有 5 个 类,其中 3 个包含日志消息。

我使用下面的代码来配置log4j。

public static void configureLog4j(String log4j,String logs,String timeStamp) throws IOException {
    PropertyConfigurator.configure(log4j);      
    FileAppender fileapp = (FileAppender) Logger.getRootLogger().getAppender("FILE");
    if(fileapp != null)
        logger.removeAppender(fileapp);
    String filename = logs + "/test_" + info + "_" + timeStamp;
    fileapp.setFile(filename);
    fileapp.setLayout(new PatternLayout("%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"));
    fileapp.setWriter(new FileWriter(new File(fileapp.getFile())));
    Logger.getRootLogger().addAppender(fileapp);
}

info 表示用户名。现在,一旦我在应用程序的开头配置了这个,只有两个 类 在文件中写入日志,第三个文件包含发送和接收数据的代码,不会将日志写入日志文件。我在这里遗漏了什么吗?

请帮我解决这个问题。

有可能第三个 class 在您有机会配置记录器之前就已经在记录了。这是我切换到 logback 的原因之一:它具有更强大(和更好记录)的配置文件格式。

上面的代码也有问题:

if(fileapp != null)
    logger.removeAppender(fileapp);

logger 未在任何地方定义,并且 fileapp 必须为非空,否则稍后会出现 NPE。

请确保您的第三个class在配置前不应该记录