我使用apache tailer来读取行尾,如果在文件日志中添加新行,程序将只打印行尾,它就像" tail -f"从linux,我有输出尾部与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();
}
}
当我在程序之上运行时,它直接输出控制台
答案 0 :(得分:0)
您可以定义程序每次新行 tailed 时要执行的操作。此行为在类 ShowLinesListener 的方法 handle 中定义:
@Override
public void handle(String line) {
System.out.println(line);
}
您所要做的就是改变这一行
System.out.println(line);
用它做你想做的事。由于您已经在使用commons-io库(这是定义TailerListener和TailerListenerAdapter类的位置),您可以使用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())
}
}