Log4j 和 syslogappender

发布于 2024-12-19 11:44:33 字数 1050 浏览 1 评论 0原文

我有一个使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

温柔戏命师 2024-12-26 11:44:33

系统日志中未启用远程日志记录。很奇怪,因为它仍然打开并侦听 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.

冷了相思 2024-12-26 11:44:33

也许这会有所帮助: 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文