Log4j 和 syslogappender
我有一个使用 log4j SyslogAppender (facility=USER) 的 java 应用程序,我可以在端口 514 上使用 tcpdump 看到我的应用程序正在以数据报的形式发送预期的日志消息,并且 netstat 向我显示 syslogd(红帽)正在 0.0.0 上运行和侦听.0.0:514 但我没有看到 /var/log/messages 中发生任何日志记录。
在我的 syslog.conf 中,我有
*.info /var/log/messages
SyslogAppender 的转换模式,
%d{MMM 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("%d{MMM 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");
}
I have a java application using log4j SyslogAppender (facility=USER) and I can see using tcpdump on port 514 that my application is sending intended log message as a datagram and also netstat shows me that syslogd (red hat) is running and listening on 0.0.0.0:514 but I do not see any logging happening in /var/log/messages.
In my syslog.conf, I have
*.info /var/log/messages
My conversion pattern for SyslogAppender is
%d{MMM dd HH:mm:ss} %F %L %5p [%t] %m %n"
I am clueless as why it is failing to log or where exactly should I look for to see what is failing. And I don't have enough permissions on the machine to start/stop syslogd or run manually to have verbose debug logs enabled.
Any pointers as how I proceed?
Edit:
The Appender below
private void initSyslog() {
SyslogAppender syslogAppender = new SyslogAppender();
syslogAppender.setName("syslog");
syslogAppender.setLayout(new PatternLayout("%d{MMM 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");
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
系统日志中未启用远程日志记录。很奇怪,因为它仍然打开并侦听 514。一旦我开始使用 syslog -r,一切都开始记录。
Remote logging was not enabled in syslog. Weird, because it still opens and listens on 514. Once I started with syslog -r, everything started logging.
也许这会有所帮助: http://wiki.loggly.com/log4j
这只是一个设置的示例使用 SyslogAppender。只需忽略有关将其转发到 Loggly 的部分即可。
Maybe this will help: http://wiki.loggly.com/log4j
It's just an example set up with using SyslogAppender. Just ignore the part about forwarding it to Loggly.