Log4j和syslogappender

时间:2011-12-01 23:50:33

标签: java log4j syslog

我有一个使用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");
} 

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:0)

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

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