2011-04-11 63 views
0

我有一個ArrayList調用fileList。它包含一個文件名列表。通過for循環,我正在爲每個文件名創建線程,並使用 Java API監視文件。現在我想獲取文件中存在的每條消息的文件名。在java中,如何獲得線程中的文件名稱

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

在上面的代碼中,如何獲取相應日誌消息的文件名?

+0

什麼對應的日誌消息?恐怕你的問題很不明確。請閱讀http://tinyurl.com/so-hints並編輯您的問題以提供更多信息。 – 2011-04-11 07:01:03

回答

3

一個簡單的方法是使用單獨的偵聽器爲每個文件:

更改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);  
} 
相關問題