如果我不断地解析一个日志文件并且我检测到它已经旋转,那么处理这个问题的最佳实践是什么?
- 更新我的内部哈希图以反映新的文件指针(旋转文件结束)
- 或者我应该将哈希图更新为 0,以便它可以从一开始就读取旋转的文件
我担心的是,在情况没有异常的情况下。2,我可能从一开始就间接解析一个大文件,给主机带来很大的负载。但是,如果我不使用。1 我可能会错过一些我正在解析日志文件的关键信息。
这是我放在一起的代码。
currentFilePointer = util.FileManagement.getLastFilePointerFromFile(file.getName());
lastFilePointer = Long.parseLong(lastReadFiles_.get(file.getName()).toString());
if (currentFilePointer < lastFilePointer) // file has grown
{
processLineByLine(file.getName(), currentFilePointer, lastFilePointer);
} else if (currentFilePointer > lastFilePointer) // file has been rotated
{
lastReadFiles_.put(file.getName(), currentFilePointer); // Option 1
}