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

时间:2015-05-28 13:00:24

标签: java logging log4j

我正在尝试根据输入参数将项目中的数据记录到文件中。我的项目有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表示用户的名称。现在,一旦我在应用程序的开头配置它,只有两个类在文件中写入日志,第三个文件包含要发送的代码和接收数据不会将日志写入日志文件。这里有什么我想念的东西吗?

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

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

上面的代码也包含一个问题:

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

logger未在任何地方定义,fileapp必须为非空,否则您将在以后获得NPE。

答案 1 :(得分:0)

请确保在配置之前 您的第三堂课不应记录