Сбой записи в файл как JSON с logstash-logback-encoder
У меня есть приложение Scala, использующее scala logging 3.5.0, logback-classic 1.1.7. Я могу войти в простой текстовый файл без проблем, но (хотя я еще не использую logstash), я хотел изменить формат файла журнала на JSON, используя https://github.com/logstash/logstash-logback-encoder. Мое обновленное определение приложения файла теперь выглядит так:
<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 ответ
Проблема была по моей вине... У меня были вложенные объявления кодировщика. Как только я удалил это, все работало нормально. Я предполагаю, что отправил слишком рано!