in java TailListener,how to avoid duplicate log me

2020-04-08 07:33发布

my code is given below .

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, i am monitoring the log file.whenever log messages updated in log file(c:\development\temp\test.log),it will print the log message.

The problem is,whenever log messages updated in log file,it displaying the same log message by two times and also some times by three or four times.how to avoid this duplicate log messages.

3条回答
不美不萌又怎样
2楼-- · 2020-04-08 08:08

One of the reasons for the duplicate messages is that if you are using the Tailer.create static method to create the Tailer, it automatically starts the process of monitoring the log.

We make the mistake of doing a tailer.run which starts another monitoring instance and prints the same entries twice.

查看更多
\"骚年 ilove
3楼-- · 2020-04-08 08:12

Looking at the code of Tailer, I can't see how that can happen. Are you sure that you aren't running multiple copies of the tailer, and that the messages aren't actually duplicated in the log file.

查看更多
Anthone
4楼-- · 2020-04-08 08:22

Following code removed the issue with two invocations of the TailerListenerAdapter:handle function.

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(); 
查看更多
登录 后发表回答