2015-05-14 69 views
1

的Log4j可以将日志发送到Papertrail使用系统日志的appender(documentation):LoggerFields的系统日志(输出日志优先级和堆栈跟踪)

log4j.appender.syslog=org.apache.log4j.net.SyslogAppender 
log4j.appender.syslog.Facility=LOCAL7 
log4j.appender.syslog.FacilityPrinting=false 
log4j.appender.syslog.Header=true 
log4j.appender.syslog.SyslogHost=<host>.papertrailapp.com:XXXXX 
log4j.appender.syslog.layout=org.apache.log4j.PatternLayout 
log4j.appender.syslog.layout.ConversionPattern=%p: (%F:%L) %x %m %n 

通知得心应手ConversionPattern财产。


我设法得到的东西同样的轧制,为log4j2:

Syslog: 
    name: Syslog 
    id: [my-id] 
    appName: [my-app] 
    protocol: UDP 
    format: RFC5424 
    facility: local7 
    host: <host>.papertrailapp.com 
    port: XXXXX 
    includeMDC: true 
    mdcId: mdc 

它的工作原理和使用默认RFC5424格式输出:

May 14 14:31:36 [server] [app]: My log message 

我真正想要的是具有优先级信息以及完整堆栈跟踪的消息:

May 14 14:31:36 [server] [app]: ERROR My log message MyException 
     at package1.MyClass.method1(MyClass.java:20) 
     at ... 

貌似LoggerFields是应该做的,但我不能得到它的工作:

loggerFields: 
    LoggerFields: 
    KeyValuePair: 
     key: priority 
     value: "%p" 
    KeyValuePair: 
     key: exception 
     value: "%ex" 

我怎样才能得到Log4j2输出使用所需的格式为syslog?

回答

1

请尝试设置RFC5424LayoutexceptionPattern属性为%ex

+0

它的工作'exceptionPattern:“%ex”',只需要找到一种方法来放置优先级信息。 –

+0

我试图 'log4j.appender.syslog.layout.ExceptionPattern =%ex' 和 'log4j.appender.syslog.ExceptionPattern =%ex' 我得到错误:WARN在org.apache没有这样的属性[exceptionPattern。 log4j.PatternLayout – Roman

+0

我没有看到使用LoggerFields为log4j.properties文件添加日志优先级的任何方式。 有没有添加日志优先级的解决方案? –