Java 使用Apache Commons io的TailerListenerAdapter跟踪文件不起作用
我想使用Java跟踪文件内容,我尝试使用ApacheCommonsIO的Tailer和TailerListenerAdapter。我已经将storm-core-1.1.1.jar包含在类路径中,以获得所需的依赖项;但是TailerListenerAdapter的“handle”方法根本没有被调用,执行过程被卡在主方法中。下面是代码:Java 使用Apache Commons io的TailerListenerAdapter跟踪文件不起作用,java,multithreading,apache-commons-io,apache-tailer,Java,Multithreading,Apache Commons Io,Apache Tailer,我想使用Java跟踪文件内容,我尝试使用ApacheCommonsIO的Tailer和TailerListenerAdapter。我已经将storm-core-1.1.1.jar包含在类路径中,以获得所需的依赖项;但是TailerListenerAdapter的“handle”方法根本没有被调用,执行过程被卡在主方法中。下面是代码: import org.apache.storm.shade.org.apache.commons.io.input.TailerListenerAdapter; i
import org.apache.storm.shade.org.apache.commons.io.input.TailerListenerAdapter;
import org.apache.storm.shade.org.apache.commons.io.input.Tailer;
import org.apache.storm.shade.org.apache.commons.io.input.TailerListener;
import java.io.File;
public class LogTailTest {
/**
* TailerListener implementation.
*/
static public class ShowLinesListener extends TailerListenerAdapter {
@Override
public void handle(String line) {
System.out.println(line);
System.out.println("inside handle");
}
}
public static void main(String args[]) {
TailerListener listener = new ShowLinesListener();
File file = new File("C:/LogFiles/Radius-log");
System.out.println("inside main");
Tailer tailer = Tailer.create(file, listener);
tailer.run();
}
}
如果执行保持在main方法中,那么至少意味着它没有崩溃。
通过在show
ShowLinesListener
中实现TailerListener
接口的其他方法,您可以进一步了解正在发生的情况。有一些方法可以处理文件不存在、文件旋转、一般异常等。如果执行保持在主方法中,那么至少意味着它没有崩溃。
通过在showShowLinesListener
中实现TailerListener
接口的其他方法,您可以进一步了解正在发生的情况。有一些方法可以处理文件不存在、文件轮换、一般异常等。您不应该直接调用“tailer.run()”。相反,你应该:
TailerListener listener = new ShowLinesListener();
File file = new File("C:/LogFiles/Radius-log");
System.out.println("inside main");
Tailer tailer = Tailer.create(file, listener);
Thread thread = new Thread(tailer);
thread.setDaemon(true); // optional
thread.start();
您不应该直接调用“tailer.run()”。相反,你应该:
TailerListener listener = new ShowLinesListener();
File file = new File("C:/LogFiles/Radius-log");
System.out.println("inside main");
Tailer tailer = Tailer.create(file, listener);
Thread thread = new Thread(tailer);
thread.setDaemon(true); // optional
thread.start();