2010-02-10 49 views
4

關於我之前的question,我發現maven無法真正輸出jboss控制檯。所以我想我想解決它。這是處理:不斷讀取附加到日誌文件的行

雖然jboss運行時,它將控制檯日誌寫入server.log文件,所以我試圖檢索數據,因爲它每隔幾秒鐘文件就會被jboss更改/更新我遇到了一些困難,所以我需要幫助。

我實際上需要的是:

  1. 讀取文件的server.log
  2. 時的server.log與添加幾行輸出的變化

這裏是到目前爲止的代碼改變我得到了,它有一個問題,它無限期地運行,並且每次從文件開始時都會啓動,我希望它繼續從server.log中打印新行。希望它有一定道理這裏是代碼:

import java.io.*; 


class FileRead 
{ 
    public static void main(String args[]) 
    { 
     try{ 
    for(;;){ //run indefinitely 
    // Open the file 
    FileInputStream fstream = new FileInputStream("C:\\jboss-5.1.0.GA\\server\\default\\log\\server.log"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); 
    String strLine; 
    //Read File Line By Line 
    while ((strLine = br.readLine()) != null) { 
     // Print the content on the console 
     System.out.println (strLine); 
    } 
    //Close the input stream 
    in.close(); 
    } 
    } 
     catch (Exception e){//Catch exception if any 
     System.err.println("Error: " + e.getMessage()); 
    } 
    } 
} 

按照蒙特克里斯托建議我這樣做:

import java.io.*; 

class FileRead { 
    public static void main(String args[]) { 
     try { 
      // Open the file that is the first 
      // command line parameter 
      FileInputStream fstream = new FileInputStream(
        "C:\\jboss-5.1.0.GA\\server\\default\\log\\server.log"); 
      BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); 
      String line; 
      // Read File Line By Line 
      while ((line = br.readLine()) != null) { 
       // Print the content on the console 
       line = br.readLine(); 
       if (line == null) { 
        Thread.sleep(1000); 
       } else { 
        System.out.println(line); 
       } 

      } 
      // Close the input stream 
      in.close(); 

     } catch (Exception e) {// Catch exception if any 
      System.err.println("Error: " + e.getMessage()); 
     } 
    } 
} 

它仍然沒有工作,它只是打印的原始文件。雖然文件不斷變化沒有任何反應..沒有打印出來,除了原始的日誌文件。

下面是解: TNX Montecristo

import java.io.*; 

class FileRead { 
    public static void main(String args[]) { 
     try { 

      FileInputStream fstream = new FileInputStream(
        "C:\\jboss-5.1.0.GA\\server\\default\\log\\server.log"); 

      BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); 
      String line; 

      while (true) { 

       line = br.readLine(); 
       if (line == null) { 
        Thread.sleep(500); 
       } else { 
        System.out.println(line); 
       } 

      } 

     } catch (Exception e) { 
      System.err.println("Error: " + e.getMessage()); 
     } 
    } 
} 

另見:

http://vanillajava.blogspot.co.uk/2012/08/java-memes-which-refuse-to-die.html

+0

Dup of http://stackoverflow.com/question s/557844/java-io -unix-linux-tail -f- – skaffman 2010-02-10 16:24:54

+0

@skaffman不是重複的..我仍然沒有得到我的答案..我需要這個不斷運行 – ant 2010-02-10 16:28:27

+0

接受的答案在由我和skaffman鏈接鏈接不斷運行... – 2010-02-10 16:37:13

回答