2012-02-11 115 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.