Tomcat6 webapp 使用 log4j 进行日志记录,无法登录到 syslog
Posted
技术标签:
【中文标题】Tomcat6 webapp 使用 log4j 进行日志记录,无法登录到 syslog【英文标题】:Tomcat6 webapp using log4j for logging, unable to log to syslog 【发布时间】:2009-08-19 13:40:25 【问题描述】:我正在尝试将我的 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 是否正确?
当我尝试像“DailyRollingFileAppender”等普通附加程序时,日志记录工作正常..但我无法让 SyslogAppender 工作..
谢谢! -凯沙夫
【问题讨论】:
【参考方案1】:Ubuntu 10.04 上的类似问题,我必须取消注释 /etc/rsyslog.conf 中的两行才能接收 SyslogAppender 消息。
# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
【讨论】:
【参考方案2】:通常,附加到 syslog 会失败,因为 syslog 守护程序未设置为接受来自网络的数据包。您的“logger -i -p”没有说明是否允许数据包...
【讨论】:
对不起,我没听懂。我正在从 localhost 尝试,我确定 syslogd 正在侦听其 udp 端口。以上是关于Tomcat6 webapp 使用 log4j 进行日志记录,无法登录到 syslog的主要内容,如果未能解决你的问题,请参考以下文章
在 Tomcat 6-Java 7/8 中运行 Tomcat 6-Java 6 WebApps
使用 Jetty 和 log4j 设置外部 webapp 日志配置
Spring Boot Webapp:让 Hibernate 使用 log4j
现在有这样一个J2EE项目,使用tomcat6 + mysql5+struts2 开发的项目,如何完成打包并部署到服务器上,