我尝试使用java中的简单脚本来监控日志文件。 如何在再次运行脚本时检查文件是否已更改。 脚本应检查发生的是短语" Unable" 我的脚本每5分钟运行一次(Windows Scheduler)
我的代码:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class LogAgent {
public static void main(String[] args)
{
double count = 0,countBuffer=0,countLine=0;
String lineNumber = "";
String filePath = "/Users/Radek/log.txt";
BufferedReader br;
String inputSearch = "Unable";
String line = "";
try {
br = new BufferedReader(new FileReader(filePath));
try {
while((line = br.readLine()) != null)
{
countLine++;
//System.out.println(line);
String[] words = line.split(" ");
for (String word : words) {
if (word.equals(inputSearch)) {
count++;
countBuffer++;
}
}
if(countBuffer > 0)
{
countBuffer = 0;
lineNumber += countLine + ",";
}
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
if (count == 0)
{
System.out.println("Stan poprawny");
}
else
{
System.out.println("Liczba wystapien alertu--"+count);
// System.out.println("Alert w liniach--"+lineNumber);
}
}
}
答案 0 :(得分:0)
我一直在使用类似的系统,其中"日志代理"保持自己的日志记录它从它监视的日志文件中读取的字节数。因此,每次运行代理程序时,都会将字节数写入另一个文件。启动代理程序时,它会以字节数读回并在再次读取实际日志文件之前跳过该字节数。它运作良好,我建议这样做。或者,您可以保存读取的行数而不是字节数,然后使用它。