我有很奇怪的问题。
我每10分钟运行一个小型Java应用程序来完成一些数据库工作。它将其活动记录在一个文件中。这非常有效,除非它作为一个cron作业运行,当它莫名其妙地创建4个单独的日志文件副本时。 a.log,a.log0,a.log1,a.log2。
据我所知,当文件锁定时会发生这种情况,但我无法想到为什么会出现这种情况,特别是为什么它只发生在cron上。
它能够将日志信息写入所有四个文件,包括正确的文件,那为什么要创建一个额外的三个?
我在应用程序生命周期结束时关闭了FileHandler,所以不是这样。设置很简单:
rootLogger = LogManager.getLogManager().getLogger("");
//remove current handlers
for (Handler h : rootLogger.getHandlers()){
rootLogger.removeHandler(h);
}
Handler infohandler = new FileHandler ("/dir/info.log", true);
Handler errorhandler = new FileHandler ("/dir/error.log", true);
Formatter format = new CustomFormatter();
infohandler .setFormatter(format);
errorhandler.setFormatter(format);
infohandler .setLevel(Level.INFO);
errorhandler.setLevel(Level.WARNING);
rootLogger.addHandler(infohandler);
rootLogger.addHandler(errorhandler);
使用:
infohandler.close(); errorhandler.close();
我现在只调用一次该函数,但是:
rootLogger.log(Level.INFO, "Log this");
cron工作非常简单:
*/10 * * * * root /usr/bin/java -jar /dir/db_clean.jar
有什么想法吗?这让我很难过。
权限都是-rw-r - r--,由root拥有。
答案 0 :(得分:0)
这看起来相关: http://developer.classpath.org/doc/java/util/logging/FileHandler-source.html
在第一篇评论中,最后提到的内容之一描述了指定模式的结果,该模式创建了您描述的3个文件。也许知道为什么会引导你找到解决方法的答案。