在 tomcat 中使用 java.util.logging.logger 时,我遇到了日志文件名轮换的问题。
private Logger LOGGER = Logger.getLogger(MyClass.class.getName());
private FileHandler fh = null;
Log log = new Log();
private void writeLog(String terminalId, String date_time, String msg){
log.isExists();
fh = new FileHandler(log.fullPath(), true);
fh.setLevel(Level.INFO);
fh.setFormatter(new MyLogFormatter());
LOGGER.addHandler(fh);
LOGGER.setUseParentHandlers(false);
LOGGER.setLevel(Level.INFO);
LOGGER.info("Terminal: " + terminalId);
LOGGER.info("Time: " + date_time);
LOGGER.info("message: " + msg);
}
public test() {
writeLog(mapXML.get("terminalId"), mapXML.get("date_time"), "successful");
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,log.fullPath()就像“/usr/desktop/2015-05-13.log”
在我多次执行 test() 后,多个文件如
2015-05-13.log, 2015-05-13.log.1, 2015-05-13.log.2, 2015-05-13.log.3
生成。
在 2015-05-13.log 中,它包含总消息,而带有编号的文件仅包含该执行的消息。
我知道如果在每次执行后重新启动 tomcat test(),只会创建 2015-05-13.log。
但是每次执行后我都无法重新启动tomcat。那么如何让它只生成一个日志文件呢?
这来晚了,但我仍在为那些可能会发现这相关的人发帖。
问题是因为你FileHandler fh写完后没有关闭。创建的第一个日志文件保持锁定状态且不可用,因此,随后会创建一个新文件并附加一个数字以避免冲突。
只需添加fh.close();afterLOGGER.info("message: " + msg);即可关闭处理程序。
| 归档时间: |
|
| 查看次数: |
5896 次 |
| 最近记录: |