0

我使用 apache tailer 读取行尾,如果在文件日志中添加新行,程序将只打印行尾,就像 linux 中的“tail -f”,我有输出尾要使用字符串发送。

我可以获取输出尾部并保存到下面的代码的字符串吗?

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();

}

}

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

4

1 回答 1

0

您定义每次程序尾随新行时要执行的操作。此行为在类ShowLinesListener的方法句柄中定义:

@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())
    }
}
于 2017-03-07T22:06:56.127 回答