2012-09-10 32 views
0

我想遠程監視我的Java EE應用程序(部署在glassfish服務器上)的活動。 基本上,我希望我的客戶端使用Vaadin實現顯示有關服務器端活動的日誌。如何遠程查看Vaadin中Java EE應用程序的活動日誌?

用戶想知道發生了什麼,在服務器端......這些日誌應該只有高層次的信息消息

我想這真的取決於如果任何使用的日誌框架。我已經看到了鏈鋸log4j,但這是一個客戶端。 否則,我可以按行遠程讀取文件(如tail -f)......但我不知道該怎麼做。

什麼是實現這種事情的最佳解決方案?

回答

2

通常情況下,您只需使用Vaadin標籤,無限讀取日誌文件(或直至停止)並將文件內容附加到標籤。下面是一個爲代碼不正是這樣:

 Thread t = new Thread() { 
     @Override 
     public void run() { 

      BufferedReader reader = null; 
      try { 
       reader = new BufferedReader(new FileReader(LOGFILE)); 
       String line; 
       while (running) { 
        line = reader.readLine(); 
        if (line == null) { 
         // wait until there is more lines in the file 
         Thread.sleep(POLL_MS); 
        } else { 
         // append to the log Label 
         synchronized (MyApplication.this) { 
          log.setValue(log.getValue() + line + "<br />"); 
         } 
        } 
       } 
      } catch (IOException e) { 
       // TODO: handle me 
       e.printStackTrace(); 
      } catch (InterruptedException e) { 
       // TODO: handle me 
       e.printStackTrace(); 
      } finally { 
       running = false; 
       if (reader != null) { 
        try { 
         reader.close(); 
        } catch (IOException ignore) { 
        } 
       } 
      } 

     } 
    }; 
    t.start(); 

對於這個工作,你需要一個"RAW" mode LabelProgressIndicator是輪詢服務器:

ProgressIndicator pi = new ProgressIndicator(); 
    pi.setPollingInterval(POLL_MS); 
    pi.setIndeterminate(true); 
    layout.addComponent(pi); 

聲明:此代碼是從非關鍵的應用程序,例如錯誤處理和HTML轉義丟失。

+0

謝謝,我會嘗試這個.. – LB40

1

我看到你想在你的應用中執行這個功能。我不確定你是否可以利用Chainsaw在Vaadin中使用的部分,但如果你好奇,你可以看看VFSLogFilePatternReceiver。

不管怎樣,電鋸的信息,如果你想嘗試一下,看看它是否適合你:

電鋸可以讀取日誌文件,可以從一個文件系統事件遠程的人通過共用VFS(HTTP,SSH的支持, ftp,smb)。

如果您願意,可以試試最新的開發者快照 - 配置屏幕希望能夠清楚說明如何裁剪日誌文件,並且具有當前發佈版本中不具備的大量功能。

快照可在這裏: http://people.apache.org/~sdeboy

相關問題