获取输出控制台尾部并保存到字符串Java?

时间:2017-01-22 04:16:10

标签: java apache-tailer

我使用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();

}

}

当我在程序之上运行时,它直接输出控制台

1 个答案:

答案 0 :(得分:0)

您可以定义程序每次新行 tailed 时要执行的操作。此行为在类 ShowLinesListener 的方法 handle 中定义:

@Override
public void handle(String line) {
    System.out.println(line);
}

您所要做的就是改变这一行

System.out.println(line);

用它做你想做的事。由于您已经在使用commons-io库(这是定义TailerListenerTailerListenerAdapter类的位置),您可以使用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())
    }
}