Spring boot уже поставляется с великолепной, предварительно сконфигурированной системой ведения журналов внутри, но в реальных проектах важно иметь возможность искать журналы, объединять их и легко получать доступ. Одним из самых простых вариантов для этого является http://papertrailapp.com/ . Они предоставляют услугу регистрации с протоколом системного журнала и бесплатным планом 100 МБ / мес.
Подготовим papertrail для нашего примера:
- создать группу журналов на панели инструментов papetrail (кнопка «Создать группу»).
- Создайте место назначения журнала на приборной панели papertrail.
- Зайдите в «Аккаунт -> Журнал направлений»
- Нажмите кнопку «Создать журнал назначения».
- Убедитесь, что ваша группа выбрана в поле « Новые системы присоединятся».
- Вы можете оставить все остальные поля с их значениями по умолчанию, просто нажмите «Создать».
- Запомните место назначения вашего журнала (будет выглядеть как logs2.papertrailapp: 12345), мы будем использовать его позже
Spring boot использует Logback в качестве системы регистрации по умолчанию. Это мощный инструмент для ведения журнала с большим количеством опций. Для наших целей мы будем использовать ch.qos.logback.classic.net.SyslogAppender .
Добавьте файл «logback.xml» в папку «resources» со следующим содержимым:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml"/> <appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender"> <syslogHost>${PAPERTRAIL_HOST}</syslogHost> <port>${PAPERTRAIL_PORT}</port> <facility>USER</facility> <suffixPattern>${PAPERTRAIL_APP:-app} %highlight([%.-1level]) %35.35logger{35}:\t%m\t%cyan%ex{5}</suffixPattern> <throwableExcluded>true</throwableExcluded> </appender> <root level="INFO"> <appender-ref ref="CONSOLE" /> <appender-ref ref="SYSLOG" /> </root> </configuration>
Я использую переменные среды ((1), (2) и (3)) для учетных данных Papertrail, это позволит вам настраивать разные места назначения журналов в разных прикладных средах.
Обратите внимание, исключено броска в (4). У нас уже есть шаблон для throwable в suffixPattern (% cyan% ex {5}). Почему мы это делаем? Поскольку в противном случае построчно будут напечатаны трассировки стека исключений после основного сообщения журнала, это увеличит трафик, а также вы не сможете увидеть трассировку стека в поиске.
Я продемонстрирую, как это работает с очень простым приложением Spring Boot:
package com.github.bsideup.spring.boot.example.papertrail; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class Application { private static final Logger log = LoggerFactory.getLogger(Application.class); public static void main(String[] args) { SpringApplication.run(Application.class, args); } @RequestMapping("/") public String index() { log.warn("I'm so tired to welcome everyone", new Exception(new Exception())); return "Hello world!"; } }
Теперь запустите ваше приложение со следующими переменными окружения:
- PAPERTRAIL_HOST — хост из вашего места назначения журнала (то есть logs2.papertrailapp.com)
- PAPERTRAIL_PORT — порт из пункта назначения вашего журнала (т. Е. 12345)
- [необязательно] PAPERTRAIL_APP — имя приложения (по умолчанию: приложение)
Ваш вывод бумажных трасс будет похож на мой:
Вы можете найти пример проекта на GitHub: https://github.com/bsideup/spring-boot-sample-papertrail