2012-02-11 203 views
3

我努力使Glassfish 3.1.1登錄到系統日誌,但我無法。我不知道這是否是一個錯誤,但我甚至不知道如何調試它。Glassfish到系統日誌

首先明顯的一步:我檢查了管理控制檯上的框以寫入系統日誌,並且在我還將複選框標記爲寫入系統控制檯之後。他們都沒有工作。

我檢查了logging.properties和這條線是有

com.sun.enterprise.server.logging.SyslogHandler.useSystemLogging=true 

谷歌搜索,我發現有幾個人與被遺棄的問題抱怨。還有什麼我該做的,或者我必須寫一個自定義日誌處理程序來做到這一點?

回答

2

自GF 2.1以來,與syslog的連接發生了變化,其中使用了本地庫「libutilforsyslog.so」。在我看來,你現在必須提供UDP端口514上的本地主機通過GlassFish的接收系統日誌消息3

com.sun.enterprise.server.logging.SyslogHandler創建一個系統日誌實例是這樣的:

sysLogger = new Syslog("localhost"); //for now only write to this host 

...這是com.sun.enterprise.server.logging.Syslog的一個實例。這個類建立一個UDP數據報,發送到端口514(硬編碼)。

我在運行GlassFish的Debian主機上安裝了syslog-ng軟件包。 syslog-ng的配置有一個默認的本地日誌源:

source s_src { unix-dgram("/dev/log"); internal(); 
      file("/proc/kmsg" program_override("kernel")); 
}; 

在這個例子中,你可以簡單地添加一個監聽UDP端口514:

udp(ip(127.0.0.1) port(514)); 
0

爲了能在Glassfish的4.1,我們的系統日誌必須改變下域中的logging.properties(例如的glassfish /域/域1 /配置)

handlerServices=com.sun.enterprise.server.logging.GFFileHandler 

應該改變

handlerServices=com.sun.enterprise.server.logging.GFFileHandler,com.sun.enterprise.server.logging.SyslogHandler 

見:[GLASSFISH-20718] Write to System Log option do not send log on localhost udp port 514

爲了使一個更清潔的方式這一變化,而不是改變logging.properties直接就可以使用asadmin如下:

bash-4.3# asadmin set-log-attributes handlers=java.util.logging.ConsoleHandler,com.sun.enterprise.server.logging.SyslogHandler 

handlers logging attribute value set to java.util.logging.ConsoleHandler,com.sun.enterprise.server.logging.SyslogHandler. 
The logging attributes are saved successfully for server. 

最後,爲了使系統日誌,你可以調用的asadmin如下:

bash-4.3# asadmin set-log-attributes com.sun.enterprise.server.logging.SyslogHandler.useSystemLogging=true 

com.sun.enterprise.server.logging.SyslogHandler.useSystemLogging logging attribute value set to true. 
The logging attributes are saved successfully for server.