170 похожих чатов

Всем привет! Надо сохранять логи для каждого http-запроса в отдельном

файле

Запросов немного, но выполняются долго, и записей в логе для каждого запроса порядком

Логгер спринг бута умеет такое: автоматически создавать отдельные файлы логов по триггеру (поступлению запроса)?

Или самому реализовать придется? Пока не нагуглил ничего похожего

11 ответов

20 просмотров

Это можно через MDC, discriminator, SiftingAppender сделать https://logback.qos.ch/manual/appenders.html Для каждого реквеста надо придумать один уникальный идентификатор и с помощью MDC прокинуть его в логгер и указать что он является частью имени лог файла в конфигурации SiftingAppender. Этот идентификатор можно на уровне интерцептора прицепить к реквесту, как советуют выше.

Смотри spring sleuth - трассировка запросов На счёт ротации файлов - из коробки делается логбэком, да и любым другим линкором, находится легко

Александр-Евтеев Автор вопроса
Alexandr ∨∧‾ Emelyanov
Смотри spring sleuth - трассировка запросов На сч...

Не, там не совсем ротация. Новый триггер - новый отдельный файл лога именно для этого триггера. Но в данном случае триггером может быть запрос

Александр Евтеев
Не, там не совсем ротация. Новый триггер - новый о...

У тебя будет миллион файлов, допустим, твоя файловая система просто помрёт. Никто так не делает, просто добавляют идентификатор запросу и пишут его в каждую запись лога, это и есть трейсинг. Потом просто по идентификатору получаешь весь лог в общем файле (или ещё лучше где нибудь в елк)

Александр Евтеев
👍

Ещё хорошая практика этот идентификатор отдать клиенту в заголовке ответа, тогда клиент тебе может дать этот ид и траблшутинг станет ещё легче

Александр-Евтеев Автор вопроса
Alexandr ∨∧‾ Emelyanov
У тебя будет миллион файлов, допустим, твоя файлов...

Переварил )) Это техдолг, и ELK там не предвидится в ближайшем будущем А подскажи вот тут: "идентификатор запроса пишут в каждую запись лога, потом по нему получаешь весь лог в общем файле" То есть по бест практис мне лучше не писать сразу нужные записи в отдельный файл лога по мере их поступления, а "потом" (то есть после выполнения задачи, перед отправкой респонса) выбрать из рут-лога нужные строки, и сохранить в отдельный файл? Просто задача - именно отдельный файл на каждый запрос. Запросов немного, а эти файлы сразу выгружаются в файловое хранилище и удаляются с сервера

Александр-Евтеев Автор вопроса
Alexandr ∨∧‾ Emelyanov
Никто так не делают, все пишут в один файл

Да я тоже не против, но заказчика переубедить не удалось )

Evgeny Sanevich
Это можно через MDC, discriminator, SiftingAppende...

А еще получается - можно просто в лог-сообщениях сессию указывать - а потом парсить по этой метке и смотреть только то, что привязано к данной сессии, выходит?

Arstan
А еще получается - можно просто в лог-сообщениях с...

Да, можно и так, я кстати так делал как-то раз на проекте - парсил, точнее грепал по метке. Дёшево и сердито)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта