4

我的代码如下。

public static void main(String[] args) {
        // TODO code application logic here
        File pcounter_log = new File("c:\development\temp\test.log");

    try {
        TailerListener listener = new PCTailListener();
        Tailer tailer = new Tailer(pcounter_log, listener, 5000,true);

        Thread thread = new Thread(tailer);
        thread.start();
    } catch (Exception e) {
        System.out.println(e);
    }
}

public class PCTailListener extends TailerListenerAdapter {
 public void handle(String line) {
  System.out.println(line);
 }
}

.ie,我正在监视日志文件。每当日志文件(c:\development\temp\test.log)中更新日志消息时,它都会打印日志消息。

问题是,每当更新日志文件中的日志消息时,它会显示相同的日志消息两次,有时还会显示三到四次。如何避免这种重复的日志消息。

4

3 回答 3

6

重复消息的原因之一是如果您使用 Tailer.create 静态方法创建 Tailer,它会自动启动监控日志的过程。

我们犯了一个tailer.run的错误,它启动了另一个监控实例并打印了两次相同的条目。

于 2015-09-15T18:45:49.247 回答
1

以下代码通过 TailerListenerAdapter:handle 函数的两次调用消除了该问题。

TailerListener listener = new TailerListener(topic);
Tailer tailer = new Tailer(new File(path), listener, sleep, true);
Thread thread = new Thread(tailer);
thread.setDaemon(true);
thread.start(); 
于 2019-01-22T19:16:35.173 回答
0

查看 Tailer 的代码,我看不出这是怎么发生的。您确定您没有运行多个尾部副本,并且消息实际上并未在日志文件中重复。

于 2011-05-07T14:50:34.190 回答