Перейти к содержанию

Структурное журналирование: создание полезных сообщений журналов с возможностью поиска

Предположим, у нас есть приложение с подключённым журналированием в файл. Тогда в файле при записи сообщения они будут храниться в виде

warn: RecipeApplication.Controllers.RecipeCOntroller[12]
      Could not find recipe with id 3245

Однако это никак не помогает нам понять, почему случилось то, что случилось? Происходило ли это с другими рецептами? Как часто? И тому подобные вопросы.
Можно использовать инструменты для поиску по тексту, но значительно удобнее, если сообщение хранится в структурированном виде. Например, сообщение выше в структурированном виде выглядило бы так (используем формат JSON):
{
    "eventLevel": "Warning",
    "category": "RecipeApplication.Controllers.RecipeController",
    "eventId": 12,
    "messageTemplate": "Could not find recipe with {recipeId}",
    "message": "Could not find recipe with id 3245",
    "recipeId": "3245"
}

Теперь сообщение записано в формате, который позволит легко искать определенные записи журнала.

Примечание

Формат записи сообщения может различаться в зависимости от используемого поставщика журналирования. Ключевым моментом является использование пар “ключ-значение” для сохранения свойств.

Для добавления структурного журналирования требуется поставщик, который может создавать и хранить структурированные сообщения. Например, у Serilog есть получатель данных для записи в Elasticsearch.
Elasticsearch — мощный инструмент, и часто используется в промышленном окружении для хранения журналов, однако он весьма непрост в настройке. Есть и другие, более удобные варианты, например Seq.

Добавление поставщика структурного журналирования в приложение


Также при использовании структурного журналирования может быть очень полезен такой инструмент как области журналирования (scopes)

Использование областей журналирования для добавления дополнительных свойств в сообщения журнала


Последнее обновление : 7 мая 2023 г.
Дата создания : 20 октября 2022 г.

Комментарии

Комментарии