无法使用logstash-logback-encoder以JSON格式记录到文件

时间:2016-10-05 14:37:30

标签: json scala logstash-logback-encoder

我使用scala logging 3.5.0,logback-classic 1.1.7获得了Scala应用程序。我能够毫无问题地登录到纯文本文件,但是(虽然我还没有使用logstash),我想使用logstash-logback-encoder将日志文件格式更改为JSON。我更新的文件appender定义现在如下所示:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/solomon.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  <!-- daily rollover -->
  <fileNamePattern>solomon.%d{yyyy-MM-dd}.log</fileNamePattern>

  <!-- keep 30 days' worth of history -->
  <maxHistory>30</maxHistory>
</rollingPolicy>

<encoder>
  <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
</encoder>

从文档中,它似乎应该以JSON身份登录到文件,包含所有受支持的字段,但我在应用程序启动时收到空日志文件和以下错误消息:

09:05:58,101 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
09:05:58,102 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@24:70 - no applicable action for [encoder], current ElementPath  is [[configuration][appender][encoder][encoder]]
09:05:58,102 |-ERROR in ch.qos.logback.classic.PatternLayout("null") - Empty or null pattern.

我确定我错过了一些明显的东西;我的设置看起来与我见过的其他设置非常相似(它只是想要JSON文件记录,但它们还没有使用logstash)。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

问题是我的错...我有嵌套的编码器声明。一旦我删除了,一切正常。我想我发布的太快了!