if (outcome == 1) {
Logger logger = Logger.getLogger("MyLog");
FileHandler fh = new FileHandler("C:\\Temp\\Dice_Roll_J\\Logs.txt", true);
logger.addHandler(fh);
logger.setLevel(Level.ALL);
SimpleFormatter formatter = new SimpleFormatter();
fh.setFormatter(formatter);
logger.log(Level.INFO, "Outcome 1.");
}
if (outcome == 2) {
Logger logger = Logger.getLogger("MyLog");
FileHandler fh = new FileHandler("C:\\Temp\\Dice_Roll_J\\Logs.txt", true);
logger.addHandler(fh);
logger.setLevel(Level.ALL);
SimpleFormatter formatter = new SimpleFormatter();
fh.setFormatter(formatter);
logger.log(Level.INFO, "Outcome 2");
}
这个程序是一个while循环,每次进入if语句并将信息记录到文件中,它就会这样做。但问题是它还会生成另一个名为Logs.txt.1的文件,如果我再次滚动它,Logs.txt.2等等。它还生成名为Logs.txt.lck的文件。
我该如何解决这个问题?任何帮助将不胜感激
答案 0 :(得分:1)
你好像使用这个constructor权利,我唯一的猜测是前一个处理程序仍然拥有该文件,所以新的处理程序只是创建一个新文件。尝试在循环外部只创建一个处理程序,并将其用于记录目的。
答案 1 :(得分:0)
Logger logger = Logger.getLogger("MyLog");
FileHandler fh = new FileHandler("C:\\Temp\\Dice_Roll_J\\Logs.txt", true);
logger.addHandler(fh);
logger.setLevel(Level.ALL);
SimpleFormatter formatter = new SimpleFormatter();
fh.setFormatter(formatter);
将其移出循环外的每个if语句,以便剩下的唯一内容是if语句中的logger.log(Level.INFO, "Outcome x");
,然后放入fh.close();