Log4j 和 syslogappender
Posted
技术标签:
【中文标题】Log4j 和 syslogappender【英文标题】:Log4j and syslogappender 【发布时间】:2011-12-01 23:50:32 【问题描述】:我有一个使用 log4j SyslogAppender (facility=USER) 的 java 应用程序,我可以看到在端口 514 上使用 tcpdump 我的应用程序正在将预期的日志消息作为数据报发送,并且 netstat 向我显示 syslogd (red hat) 正在运行并且在 0.0.0.0:514 上收听,但我没有看到 /var/log/messages 中发生任何日志记录。
在我的 syslog.conf 中,我有
*.info /var/log/messages
我对 SyslogAppender 的转换模式是
%dMMM dd HH:mm:ss %F %L %5p [%t] %m %n"
我不知道为什么它无法记录,或者我应该在哪里寻找失败的原因。而且我在机器上没有足够的权限来启动/停止 syslogd 或手动运行以启用详细的调试日志。
关于我如何进行的任何指示?
编辑:
下面的 Appender
private void initSyslog()
SyslogAppender syslogAppender = new SyslogAppender();
syslogAppender.setName("syslog");
syslogAppender.setLayout(new PatternLayout("%dMMM dd HH:mm:ss %F %L %5p [%t] %m %n"));
syslogAppender.setFacility("USER");
syslogAppender.setFacilityPrinting(true);
syslogAppender.setSyslogHost("localhost");
syslogAppender.activateOptions();
Logger.getRootLogger().addAppender(syslogAppender);
Logger.getRootLogger.info("Syslogdone");
【问题讨论】:
请您在 log4j 配置中向我们展示您的 appender,好吗 我在运行时设置 Syslog appender,这里是 private void initSyslog() SyslogAppender syslogAppender = new SyslogAppender(); syslogAppender.setName("syslog"); syslogAppender.setLayout(new PatternLayout%dMMM dd HH:mm:ss %F %L %5p [%t] %m %n")); syslogAppender.setFacility("USER"); syslogAppender.setFacilityPrinting(true) ; syslogAppender.setSyslogHost("localhost"); syslogAppender.activateOptions(); Logger.getRootLogger().addAppender(syslogAppender); Logger.getRootLogger.info("Syslogdone"); 【参考方案1】:系统日志中未启用远程日志记录。很奇怪,因为它仍然在 514 上打开并侦听。一旦我开始使用 syslog -r,一切都开始记录。
【讨论】:
请添加您的问题。【参考方案2】:也许这会有所帮助:http://wiki.loggly.com/log4j
这只是一个使用 SyslogAppender 设置的示例。只需忽略关于将其转发到 Loggly 的部分。
【讨论】:
看起来像一个断开的链接:-(以上是关于Log4j 和 syslogappender的主要内容,如果未能解决你的问题,请参考以下文章