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的主要内容,如果未能解决你的问题,请参考以下文章

如何部署和搭建测试log4j 2

关于log4j的一个问题

slf4j与log4j是什麽关系?

log4j是个不错的记录日志的方法,请高手提供以下它的配置和使用说明,谢谢!

log4j和log4j2区别

log4j/log4j2/logback混用问题