2014-06-24 125 views
0

我這樣試過,但產生以下錯誤: -如何添加Java應用程序日誌,系統日誌

log4j:ERROR Precision option (0) isn't a positive integer. 

public class log4jExample { 

    private static Logger logger = Logger.getRootLogger(); 

    public static void main(String[] args) { 
     try { 
      SyslogAppender syslogAppender = new SyslogAppender(); 
      syslogAppender.setName("SYSLOG"); 
      syslogAppender.setSyslogHost("localhost"); 
      syslogAppender.setFacility("Local3"); 
      syslogAppender.setHeader(true); 
      PatternLayout layout = new PatternLayout("%d{dd-MMM-yyyy HH:mm:ss,SSS} [%t] %-5p %c %x - %m%n"); 
      syslogAppender.setLayout(layout); 
      Category category = Category.getInstance(log4jExample.class.getName());//logger.getParent(); 
      Throwable thrwo = new Throwable(); 
      LoggingEvent event = new LoggingEvent("log4jExample.class", category, 1000, Priority.DEBUG, new Object(), thrwo); 
      syslogAppender.append(event); 
      logger.debug("LOG"); 
     } catch (Exception ex) { 
      System.out.println("Exc " + ex); 
     } 
    } 
} 

物業資料:

 
log4j.rootLogger=INFO, SYSLOG log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender 
log4j.appender.SYSLOG.SyslogHost=localhost log4j.appender.SYSLOG.Facility=Local3 
log4j.appender.SYSLOG.Header=true 
log4j.appender.SYSLOG.layout=org.apache.log4j.PatternLayout 
log4j.appender.SYSLOG.layout.ConversionPattern=java %d{ISO8601} %p %t %c{0}.%M - %m%n 
+0

什麼版本的Log4j?我很努力地用v1.2.14重現這一點,但後來我再次在Windows上,並且稍微修改了一下代碼以使用'ConsoleAppender'。 –

+0

版本是-1.2.17 – Vishal

+0

我找到了一臺Linux機器並使用v1.2.17進行了測試。我無法重現您的錯誤,我收到一條關於沒有找到appender的警告。您的類路徑中是否有Log4j配置文件?如果是這樣,請將其添加到您的問題。 –

回答

1

它幾乎告訴你什麼是錯的:

Precision option (0) isn't a positive integer. 

正如你可以在PatternLayout documentation中看到的那樣,c有一個精度說明符,你已經設置爲0%c{0}0不是正整數。將其更改爲數字> = 1