файле
Запросов немного, но выполняются долго, и записей в логе для каждого запроса порядком
Логгер спринг бута умеет такое: автоматически создавать отдельные файлы логов по триггеру (поступлению запроса)?
Или самому реализовать придется? Пока не нагуглил ничего похожего
Это можно через MDC, discriminator, SiftingAppender сделать https://logback.qos.ch/manual/appenders.html Для каждого реквеста надо придумать один уникальный идентификатор и с помощью MDC прокинуть его в логгер и указать что он является частью имени лог файла в конфигурации SiftingAppender. Этот идентификатор можно на уровне интерцептора прицепить к реквесту, как советуют выше.
Смотри spring sleuth - трассировка запросов На счёт ротации файлов - из коробки делается логбэком, да и любым другим линкором, находится легко
Не, там не совсем ротация. Новый триггер - новый отдельный файл лога именно для этого триггера. Но в данном случае триггером может быть запрос
У тебя будет миллион файлов, допустим, твоя файловая система просто помрёт. Никто так не делает, просто добавляют идентификатор запросу и пишут его в каждую запись лога, это и есть трейсинг. Потом просто по идентификатору получаешь весь лог в общем файле (или ещё лучше где нибудь в елк)
Ещё хорошая практика этот идентификатор отдать клиенту в заголовке ответа, тогда клиент тебе может дать этот ид и траблшутинг станет ещё легче
Переварил )) Это техдолг, и ELK там не предвидится в ближайшем будущем А подскажи вот тут: "идентификатор запроса пишут в каждую запись лога, потом по нему получаешь весь лог в общем файле" То есть по бест практис мне лучше не писать сразу нужные записи в отдельный файл лога по мере их поступления, а "потом" (то есть после выполнения задачи, перед отправкой респонса) выбрать из рут-лога нужные строки, и сохранить в отдельный файл? Просто задача - именно отдельный файл на каждый запрос. Запросов немного, а эти файлы сразу выгружаются в файловое хранилище и удаляются с сервера
Никто так не делают, все пишут в один файл
Да я тоже не против, но заказчика переубедить не удалось )
А еще получается - можно просто в лог-сообщениях сессию указывать - а потом парсить по этой метке и смотреть только то, что привязано к данной сессии, выходит?
Да, можно и так, я кстати так делал как-то раз на проекте - парсил, точнее грепал по метке. Дёшево и сердито)
Обсуждают сегодня