有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Syslog的java日志字段(输出日志优先级和堆栈跟踪)

Log4j可以使用syslog appender(documentation)将日志发送到Papertrail:

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

请注意handy 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) 个答案

  1. # 1 楼答案

    请尝试将RFC5424LayoutexceptionPattern属性设置为%ex