У розробці мікросервісів логування — це дуже базове завдання — запис інформації про журнали запитів інтерфейсу, що допомагає нам усувати проблеми та відтворювати їх. Вміст журналу включає посилання, метод запиту, useragent, заголовок, IP-адресу поточного мікросервісного вузла, ім'я машини вузла, робоче середовище, IP-адресу запитувача, споживання часу та іншу інформацію.
Використовуючи блокатор фільтрів фреймворку Spring Cloud, ви можете перехоплювати записи інформації про запити на всіх інтерфейсах і зберігати записи запитів у MongoDB.
Структура логу інтерфейсу
Спочатку створимо новий об'єкт і визначаємо структуру логарифму, код виглядає так:
Логарифмічний фільтр
Створіть новий фільтр RequestLoggerFilter, успадкуйте інтерфейс Filter і реалізуйте метод doFilter, цей фільтр має найвищий пріоритет, і пріоритет фільтра можна встановити через @Order анотацію.Фільтри логують коміти POST/PUT (виключаючи записи фіксації файлів multipart/form-data), код виглядає так:
Журнали зберігаються до MongoDB
Щоб не вплинути на нормальне використання інтерфейсу, журнал інтерфейсу буде потрапляти в чергу для безпеки потоків, програма відкриває потік, потік споживатиме дані в черзі, зберігатиме дані в MongoDB і використовує maven для введення залежностей.
Для отримання додаткової інформації про mongodb див. org.springframework.boot.autoconfigure.mongo.MongoProperties
application.yml Конфігурація виглядає так:
Формат URI: ім'я користувача: root, пароль: aaaaaaaa, адреса бази даних: 127.0.0.1, номер порту: 27017, ім'я бази даних: test Наприклад: mongodb://root:aaaaaa@127.0.0.1:27017/test
ЯкщоІм'я користувача або пароль містить спеціальний символ, тому використовуйте кодування URL, інакше буде повідомлено про помилку!
Викликайте MongoTemplate для збереження даних у базі даних за допомогою наступного коду:
(Кінець)
|