Приложение Spring Boot - как распечатать логи в формате Json

Мне нужно распечатать журналы в красивом формате Json со всеми деталями.

В настоящее время у меня есть небольшая служба по загрузке Spring и конфигурационный файл application.yml. У меня ниже конфигурация для ведения журнала;

logging:
  level:
    root: INFO
    org:
      springframework:
        security: INFO
        web: INFO
      hibernate: INFO
      apache:
        commons:
          dbcp2: INFO
  file: ../logs/myLog.log
  pattern:
    console: '%d{yyyy-MMM-dd HH:mm:s  s.SSS} %-5level [%thread] %logger{15} - %msg%n'

Не могли бы вы посоветовать мне, есть ли какая-либо конфигурация для изменения аппендера, чтобы я мог получать журналы в формате Json.


person liotur    schedule 03.04.2019    source источник


Ответы (1)


Сначала создайте файл с именем logback-spring.xml в папке src / main / resources с содержимым, аналогичным этому:

<configuration>
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
    </appender>
    <logger name="jsonLogger" additivity="false" level="DEBUG">
        <appender-ref ref="consoleAppender"/>
    </logger>
    <root level="INFO">
        <appender-ref ref="consoleAppender"/>
    </root>
</configuration>

Во-вторых, добавьте следующую зависимость:

<dependency>
  <groupId>net.logstash.logback</groupId>
  <artifactId>logstash-logback-encoder</artifactId>
  <version>6.3</version>
</dependency>

Вот и все.

Вы должны увидеть строки, похожие на эту:

{"@timestamp":"2018-10-11T23:48:57.215+00:00","@version":1,"message":"Sample TRACE Message","logger_name":"com.example.demo.LoggingExample","thread_name":"http-nio-8080-exec-1","level":"TRACE","level_value":5000}

Дополнительные сведения см. В полном примере.

person pringi    schedule 30.03.2020