Хвост файла не работает с помощью TailerListenerAdapter от Apache Commons io
Я хочу, чтобы хвост файла содержимого с помощью Java. Я пытался использовать Tailer и TailerListenerAdapter Apache Commons IO. Я включил storm-core-1.1.1.jar в classpath для требуемых зависимостей. Программа компилируется и запускается; Но метод 'handle' в TailerListenerAdapter вообще не вызывается, и выполнение застревает внутри основного метода. Ниже приведен код:
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();
}
}
2 ответа
Вы не должны вызывать "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();
Если выполнение остается в методе main, то это по крайней мере означает, что оно не завершилось сбоем. Вы можете получить дальнейшее понимание того, что происходит, применяя другие методы TailerListener
интерфейс в вашем шоу ShowLinesListener
, Существуют методы для обработки отсутствия файла, ротации файлов, общих исключений и т. Д.