В настоящее время я наблюдаю за своими файлами журналов, такими как tail -f
, и время от времени я нажимаю клавишу вверх и нажимаю клавишу возврата, чтобы в консоль выводились новые изменения при печати журнала, как заставить его печатать себя при изменении файла журнала? Вот требование:
START loop
1. Check file.log
2. If file.log has changed print the changes
3. else print nothing
END
Я написал что-то похожее для Windows, чтобы выполнить из Java:
import java.io.FileInputStream;
import java.io.DataInputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
class LogWatch {
public static void main(String args[]) {
try {
FileInputStream fstream = new FileInputStream("C:\\file.log");
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line;
while (true) {
line = br.readLine();
if (line == null) {
Thread.sleep(500);
} else {
System.out.println(line);
}
}
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
}
}
Какие ненужные накладные расходы, потому что это может быть сделано из сценария оболочки, есть ли у кого-нибудь какие-либо предложения, как это сделать?