【问题标题】:Log4j and syslogappenderLog4j 和 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 的转换模式是

%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");
} 

【问题讨论】:

  • 请您在 log4j 配置中向我们展示您的 appender,好吗
  • 我在运行时设置 Syslog 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"); }

标签: java log4j syslog


【解决方案1】:

系统日志中未启用远程日志记录。很奇怪,因为它仍然在 514 上打开并侦听。一旦我开始使用 syslog -r,一切都开始记录。

【讨论】:

  • 请添加您的问题。
【解决方案2】:

也许这会有所帮助:http://wiki.loggly.com/log4j

这只是一个使用 SyslogAppender 设置的示例。只需忽略关于将其转发到 Loggly 的部分。

【讨论】:

  • 看起来像一个断开的链接:-(
猜你喜欢
  • 1970-01-01
  • 2010-10-30
  • 2013-08-30
  • 1970-01-01
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多