2012-09-13 61 views
1

我需要一些幫助入門。我打算在GlassFish 3.1(或更高版本)下部署一個新的JSF-2 Web應用程序。通常情況下,服務器將其所有日誌文件作爲文本存儲在其私有目錄中的一個文件中,其中還包括我使用以太網System.println(..)或類似java.util.logging.Logger.getLogger(。 ..)將GlassFish日誌文件捕獲到SQL/JPA數據庫中

我想要做的是,而不是那些日誌條目去文本文件,捕獲它們並將它們存檔到我的SQL數據庫。然後,我可以爲時間戳和鍵值添加表列,以便在應用程序中將其作爲管理網頁的一部分輕鬆搜索,而不必轉到管理控制檯。也可以將一些數據公開給用戶。

可以這樣做,怎麼樣?

後續問題:可以這樣做的方式可以移植到Tomcat或其他容器?

回答

1

您將需要編寫自定義日誌處理程序。自定義日誌處理程序是擴展java.util.logging.Handler類:

package test.stackoverflow; 
import java.util.logging.Handler; 
.. 
public class AlanHandler extends Handler { 
.. 
     @Override 
     public void publish(LogRecord record) { 
       //CODE THAT STORES LOG RECORD INTO THE DATABASE 
     } 
} 

此外,你將不得不稍微改變logging.properties文件:

handlers=java.util.logging.ConsoleHandler, test.stackoverflow.AlanHandler 
AlanHandler的Glassfish上(如圖書館)

部署JAR,重新啓動服務器而且應該這樣做。

+0

這看起來很簡單。我會試一試並回報。 – AlanObject

+0

這很簡單:)在老版本的Glassfish(2.1)中,您還有一些名爲'管理規則'的地方,您可以配置它來捕獲某些日誌事件(例如SEVERE)。與自定義的MBeans一起,這是一個不錯的和有用的工具,但似乎他們沒有時間去實現它的新版本(我在GF官方網站上閱讀了一些關於它的帖子)。 –

相關問題