2011-12-01 45 views
7

我有一个使用log4j SyslogAppender(facility = USER)的java应用程序,我可以看到在端口514上使用tcpdump,我的应用程序正在发送预期的日志消息作为数据报,同时netstat显示我syslogd(红帽子)正在运行并在0.0.0.0:514上侦听,但在/ var/log/messages中看不到任何日志记录。Log4j和syslogappender

在我的syslog.conf的,我有

*.info   /var/log/messages 

为SyslogAppender我的转换模式是

%d{MMM dd HH:mm:ss} %F %L %5p [%t] %m %n" 

我一无所知为什么它是无法登录,或者我应该什么地方寻找到看看有什么失败。并且我没有足够的权限在机器上启动/停止syslogd或手动运行以启用详细的调试日志。

任何指针我如何继续?

编辑:

的追加程序如下

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

将你告诉我们,你的log4j的配置你的appender,请 – Chris

+0

我在运行时设置日志附加目的地,在这里它是 私人无效initSyslog(){ SyslogAppender syslogAppender =新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 (真); syslogAppender.setSyslogHost( “本地主机”); syslogAppender.activateOptions(); Logger.getRootLogger()addAppender(syslogAppender); Logger.getRootLogger.info( “Syslogdone”);} – Prasanna

回答

9

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

+0

请加你问题作为回答。 – Ztyx

0

也许这将帮助:http://wiki.loggly.com/log4j

这只是设置为使用SyslogAppender一个例子。只需忽略将其转发给Loggly的部分即可。

+2

看起来像一个断开的链接:-( – Leo

+0

是它是这个网页:https://www.loggly.com/docs/java-log4j/? – Shadocko