Tomcat6 webapp使用log4j进行日志记录,无法登录到syslog

时间:2009-08-19 13:40:26

标签: java struts2 log4j syslog opensolaris

我正在尝试将我的webapp日志记录到local4级别的syslog中。环境:Tomcat6,OpenSolaris,Struts2,log4j。我的log4j.properties的内容如下 -

log4j.rootLogger=INFO, SYSLOG
log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG.syslogHost=localhost
log4j.appender.SYSLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.SYSLOG.layout.ConversionPattern=%d [%t] %-5p - %m%n
log4j.appender.SYSLOG.Facility=local4

我编辑了/etc/syslog.conf并在最后添加了以下行 -

local4.notice              /var/log/mylog.log

在此之后我重新启动了syslog服务。当我从shell运行以下命令时,它会正确记录在/var/log/mylog.log中。这主要意味着syslog服务正常工作 -

logger -i -p local4.notice -t "check  log" "test message"

但我完全不明白为什么来自webapp的日志永远不会到达/var/log/mylog.log。我的log4j配置对SysLogAppender是否正确?

当我尝试普通的appender如“DailyRollingFileAppender”等时,日志工作正常。但是我无法让SyslogAppender工作..

谢谢! -Keshav

2 个答案:

答案 0 :(得分:7)

在Ubuntu 10.04上的类似问题,我必须在/etc/rsyslog.conf中取消注释两行才能接收SyslogAppender消息。

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

答案 1 :(得分:2)

通常,附加到syslog会失败,因为syslog守护程序未设置为接受来自网络的数据包。您的“logger -i -p”没有说明是否允许数据包......