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();
}
第二个记录器的设置方式与 logger2
和 fh2
以及 MyLogFile2.log
相同。
我的问题是,每当任何记录器记录时,两个文件都会被写入,即使我只调用一个记录器,例如logger2.log(Level.INFO, "msg2")
.
这是为什么?是因为两个记录器同时打开吗?但我不想每次使用它们时都.close()/创建它们。有更好的解决方案吗?
您必须在此处为实例设置另一个名称:
Logger logger = Logger.getLogger("MyLog");
Logger logger2 = Logger.getLogger("MyLog2");
产生 Logger.getLogger("MyLog")
return 名称为 "MyLog" 的记录器实例,如果不存在则创建它
我在同一个 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();
}
第二个记录器的设置方式与 logger2
和 fh2
以及 MyLogFile2.log
相同。
我的问题是,每当任何记录器记录时,两个文件都会被写入,即使我只调用一个记录器,例如logger2.log(Level.INFO, "msg2")
.
这是为什么?是因为两个记录器同时打开吗?但我不想每次使用它们时都.close()/创建它们。有更好的解决方案吗?
您必须在此处为实例设置另一个名称:
Logger logger = Logger.getLogger("MyLog");
Logger logger2 = Logger.getLogger("MyLog2");
产生 Logger.getLogger("MyLog")
return 名称为 "MyLog" 的记录器实例,如果不存在则创建它