我正在开发一个监控程序,它读取/var/log/auth.log文件。我正在使用Apache Commons IO的Tailer
类来实时读取文件。为了开始,我想在一个简单的文件上测试实时读取部分,并手动输入一些代码到控制台中。以下是我的代码:
public class Main {
public static void main(String[] args) {
TailerListener listener = new MyListener();
Tailer tailer = Tailer.create(new File("log.txt"), listener, 500);
while(true) {
}
}
}
public class MyListener extends TailerListenerAdapter {
@Override
public void handle(String line) {
System.out.println(line);
}
}
从终端输入:sudo echo "Hello" >> log.txt
问题在于当我尝试手动向文件中写入内容时,它不会在控制台上输出。我试图找到Tailer类的具体使用示例,但没有运气。我在这里做错了什么?
while(true) {}
这种写法从来都不是一个好主意。你在单独的线程中启动了 MyListener 吗?你至少应该在循环中添加Thread.sleep(...)
。 - SebastianH