我写了一个自定义记录器,其中唯一的添加是以下方法:
public static synchronized Logger getLogger(String name) {
try {
boolean append = true;
FileHandler handler = new FileHandler("tmp.log", append);
Logger log = Logger.getLogger(name);
log.addHandler(handler);
return log;
} catch (java.io.IOException ex) {
//Logger.getLogger(LibraLogger.class.getName()).log(Level.SEVERE, null, ex);
} catch (SecurityException ex) {
//Logger.getLogger(LibraLogger.class.getName()).log(Level.SEVERE, null, ex);
}
return Logger.getLogger(name);
}
Run Code Online (Sandbox Code Playgroud)
它生成一系列日志文件tmp.log,tmp.log.1,tmp.log.2等.
我该如何防止这种情况发生?
在logging.properties文件中,检查java.util.logging.FileHandler.limit是否设置为0.
来自文档:
java.util.logging.FileHandler.limit指定要写入任何一个文件的近似最大量(以字节为单位).如果这是零,那么没有限制.(默认为无限制).
对于一组旋转文件,当每个文件达到给定的大小限制时,它将被关闭,旋转并打开一个新文件.通过在基本文件名中添加"0","1","2"等来命名较旧的文件.
另一种可能性是您尝试从多个进程写入相同的日志文件.如果记录器检测到某个文件无法打开(它被另一个进程锁定),则会通过向其添加下一个空闲号码来创建一个新文件.
| 归档时间: |
|
| 查看次数: |
2336 次 |
| 最近记录: |