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
