【问题标题】:LoggerFields for Syslog (output log priority and stack trace)Syslog 的 LoggerFields(输出日志优先级和堆栈跟踪)
【发布时间】:2015-07-26 12:23:23
【问题描述】:

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

注意方便的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?

【问题讨论】:

    标签: java logging log4j2 syslog papertrail-app


    【解决方案1】:

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

    【讨论】:

    • 它工作了exceptionPattern: "%ex",现在只需要找到一种方法来放置优先级信息。
    • 我试过 log4j.appender.syslog.layout.ExceptionPattern=%exlog4j.appender.syslog.ExceptionPattern=%ex 我得到错误:WARN No such property [exceptionPattern] in org.apache.log4j.PatternLayout
    • 我看不到任何使用 LoggerFields 为 log4j.properties 文件添加日志优先级的方法。有没有增加日志优先级的解决方案?
    • 你介意在 Log4j2 用户邮件列表上问这个吗?
    猜你喜欢
    • 2011-09-16
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    相关资源
    最近更新 更多