在java中,如何在线程中获取文件名

在java中,如何在线程中获取文件名,java,logging,Java,Logging,我有一个名为fileList的ArrayList。它包含一个文件名列表。通过for循环,我为每个文件名创建线程,并使用TailListenerjavaapi监视文件。现在,我想获取文件中存在的每条消息的文件名 fileListener= new fileListener(); for(int i=0;i<fileList.Size();i++) { monitorFile(filelist.get(i)); } private voi

我有一个名为
fileList
ArrayList
。它包含一个文件名列表。通过for循环,我为每个文件名创建线程,并使用
TailListener
javaapi监视文件。现在,我想获取文件中存在的每条消息的文件名

fileListener= new fileListener();

for(int i=0;i<fileList.Size();i++)
{           
   monitorFile(filelist.get(i));            
}

private void monitorFile(String logFile) {

         File pcounter_log = new File(logFile);

         Tailer = new Tailer(pcounter_log, fileListener, 5000);   

         ThreadPoolExec.scheduleAtFixedRate(Tailer, 5, 5, TimeUnit.SECONDS);    
    }


public class fileListener extends TailerListenerAdapter {

String s= "abc";

    public void handle(String line) {

            if(line.contains(s)){
                System.out.println(line);
            }
    }
}
fileListener=newfilelistener();

对于(int i=0;i而言,一种简单的方法是为每个文件使用单独的侦听器:

将您的
fileListener
类更改为以下内容:

public class FileListener extends TailerListenerAdapter {

    private final String fileName;

    public FileListener(String fileName) {
         this.fileName = fileName;
    }

    public void handle(String line) {
         if(line.contains(s)){
             System.out.println(fileName + ": " + line);
         }
    }
}
然后只需为您监视的每个文件实例化一个新的
FileListener

private void monitorFile(String logFile) {
     File pcounter_log = new File(logFile);
     Tailer = new Tailer(pcounter_log, new FileListener(logFile), 5000);   
     ThreadPoolExec.scheduleAtFixedRate(Tailer, 5, 5, TimeUnit.SECONDS);    
}

一种简单的方法是为每个文件使用单独的侦听器:

将您的
fileListener
类更改为以下内容:

public class FileListener extends TailerListenerAdapter {

    private final String fileName;

    public FileListener(String fileName) {
         this.fileName = fileName;
    }

    public void handle(String line) {
         if(line.contains(s)){
             System.out.println(fileName + ": " + line);
         }
    }
}
然后只需为您监视的每个文件实例化一个新的
FileListener

private void monitorFile(String logFile) {
     File pcounter_log = new File(logFile);
     Tailer = new Tailer(pcounter_log, new FileListener(logFile), 5000);   
     ThreadPoolExec.scheduleAtFixedRate(Tailer, 5, 5, TimeUnit.SECONDS);    
}

哪些对应的日志消息?恐怕您的问题不清楚。请阅读并编辑您的问题以提供更多信息。哪些对应的日志消息?恐怕您的问题不清楚。请阅读并编辑您的问题以提供更多信息。