Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.util.logging.logger通过在日志文件名后添加数字来创建多个日志文件_Java_Logging - Fatal编程技术网

java.util.logging.logger通过在日志文件名后添加数字来创建多个日志文件

java.util.logging.logger通过在日志文件名后添加数字来创建多个日志文件,java,logging,Java,Logging,在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){ lo

在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");
}
在上面的代码中,
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中,它包含全部消息,带有编号的文件仅包含该执行的消息

我知道如果在每次执行
test()
后重新启动tomcat,只会创建2015-05-13.log


但是我不能在每次执行之后重新启动tomcat。那么,如何让它只生成一个日志文件呢?

这已经很晚了,但我仍在为那些可能发现这一点的人发帖

问题是因为您在写入后没有关闭
FileHandler fh
。创建的第一个日志文件保持锁定且不可用,因此,将创建一个新文件并附加一个数字以避免冲突


只需添加
fh.close()
LOGGER.info之后(“消息:+msg”)
关闭处理程序。

处理完文件处理程序后是否关闭了该处理程序?@Vinayak Pingale否,处理完文件处理程序后我不会关闭该处理程序。@Vinayak Pingale刷新并关闭文件处理程序后,问题就解决了,谢谢。然后它会看到该文件上已经打开了一个处理程序,并打开一个新的处理程序,该处理程序的文件名后面有一个数字。您应该只有一个处理程序。首先尝试关闭
文件处理程序
,然后运行它。其次,您可以使用以下构造函数来获取FileHandler
FileHandler fh=newfilehandler(“路径”+“logfileName”,0,1,false)但是,我有一个静态日志实例是什么?关闭它会导致进一步的日志记录被禁用,对吗?是的,关闭
文件处理程序后的日志记录将不再工作,您必须重新初始化并附加处理程序。