2011-12-01 58 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