我使用apache tailer读取行尾,如果在文件日志中添加新行,程序将只打印行尾,这就像linux中的"tail-f",我有要用String发送的输出尾部。
我可以获得输出尾部并保存到下面代码的字符串中吗?
public class LogTailTest {
/**
* TailerListener implementation.
*/
static public class ShowLinesListener extends TailerListenerAdapter {
@Override
public void handle(String line) {
System.out.println(line);
}
}
public static void main(String args[]) {
TailerListener listener = new ShowLinesListener();
File file = new File("/home/ubuntu/Desktop/test.log");
Tailer tailer = new Tailer(file, listener, 10000, true, true);
tailer.run();
try {
Thread.sleep(1000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
tailer.stop();
}
}
当我运行上面的程序时,它直接输出控制台
您定义每次程序跟踪新行时要执行的操作。此行为在类ShowLinesListener:的方法句柄中定义
@Override
public void handle(String line) {
System.out.println(line);
}
你所要做的就是改变这条线
System.out.println(line);
由于您已经在使用commons-io库(这是定义TailerListener和TailerListerAdapter类的地方),您可以使用FileUtils.writeStringtoFile方法将刚刚尾到另一个文件的行的内容写入。
你的课是这样的:
public class LogTailTest {
/**
* TailerListener implementation.
*/
static public class ShowLinesListener extends TailerListenerAdapter {
@Override
public void handle(String line) {
FileUtils.writeStringtoFile(new File("/path/to/file"),
line,
Charset.defaultCharset())
}
}