Java: 如何让两个记录器写入不同的文件 (Logger)

Java: How to make two loggers write in different files (Logger)

我在同一个 class 中有 2 个记录器,设置如下:

Logger logger = Logger.getLogger("MyLog");  
FileHandler fh;  

try {  
    // This block configure the logger with handler and formatter  
    fh = new FileHandler("C:/temp/test/MyLogFile.log");  
    logger.addHandler(fh);
    SimpleFormatter formatter = new SimpleFormatter();  
    fh.setFormatter(formatter);  
    // the following statement is used to log any messages  
    logger.info("My first log");  
} catch (SecurityException e) {  
    e.printStackTrace();  
} catch (IOException e) {  
    e.printStackTrace();  
}  

第二个记录器的设置方式与 logger2fh2 以及 MyLogFile2.log 相同。

我的问题是,每当任何记录器记录时,两个文件都会被写入,即使我只调用一个记录器,例如logger2.log(Level.INFO, "msg2").

这是为什么?是因为两个记录器同时打开吗?但我不想每次使用它们时都.close()/创建它们。有更好的解决方案吗?

您必须在此处为实例设置另一个名称:

Logger logger = Logger.getLogger("MyLog");

Logger logger2 = Logger.getLogger("MyLog2");

产生 Logger.getLogger("MyLog") return 名称为 "MyLog" 的记录器实例,如果不存在则创建它