【发布时间】:2016-12-30 18:29:53
【问题描述】:
我正在尝试将我的 Spring Boot 应用程序从 Log4j 迁移到 Log4j 2。我了解 Log4j 2 从原始 Log4j 更改了 .properties 配置的语法。
这是我原始 Log4j 配置的 sn-p:
log4j.appender.logstash=org.apache.log4j.net.SocketAppender
log4j.appender.logstash.layout=org.apache.log4j.PatternLayout
log4j.appender.logstash.layout.ConversionPattern=%d{HH:mm:ss.SSS} %-5p %c {2} %x - %m%n
log4j.appender.logstash.Port=4560
log4j.appender.logstash.RemoteHost=logs.example.com
log4j.appender.logstash.ReconnectionDelay=10000
对于 Log4j 2,这是我更新的内容:
appender.logstash.type=SocketAppender # Or 'Socket'
appender.logstash.name=logStash
appender.logstash.layout.type=PatternLayout
appender.logstash.layout.pattern=%d{HH:mm:ss.SSS} %-5p %c {2} %x - %m%n
appender.logstash.host=logs.example.com
appender.logstash.port=4560
appender.logstash.reconnectionDelayMillis=10000
但是,当我这样做时,我的控制台和文件附加程序工作得很好,但 LogStash 附加程序会引发 Broken pipe 错误。
我已经对此进行了研究,似乎我可能需要将SocketAppender 包装在AsyncAppender 中并将ref 指向我的logStash SocketAppender(如this documentation),但后来我得到了属性不存在的例外情况:
appender.async.type=异步
appender.async.ref=logStash # 或者 'refs'、'appender-ref' 等
.properties 文件不是异步套接字附加程序的方式吗?我可以通过这个属性文件在从 Log4j 1 迁移到 2 时使用一些帮助。
【问题讨论】:
-
这似乎是已知问题。您可能应该将您的 logstash-log4j2 更新到较新的版本 - 根据此链接:github.com/jurmous/logstash-log4j2/issues/3。
-
是的,就是这样。如果您不介意将其发布为答案,我可以接受。
-
我已经编辑了答案。
标签: spring-boot log4j log4j2 properties-file