Для проекта Symfony 3.2, над которым я работаю, я хочу добавить уникальный токен для всех записей журнала, относящихся к конкретному запросу. В документации Symfony есть точный пример для этого варианта использования с использованием процессоров (http://symfony.com/doc/current/logging/processors.html). Для этого в запись журнала добавляется уникальный токен, основанный на первых 8 символах идентификатора сеанса пользователя и последних 8 символах случайно сгенерированного UUID. Именно то, что я ищу.
Тем не менее, при проверке журналов, первая часть токена, которая основана на идентификаторе сеанса ($this->session->getId()
), пустой. Это связано с тем, что введенный объект Session еще не запущен. Так и должно быть, поскольку я зарегистрировал запрос на странице, доступной только с действительной аутентификацией. Я предполагаю, что процессор запускается до начала сеанса. Я чувствую, что начало сеанса в классе Processor, если $this->session->isStarted()
возвращает false — грязное решение, и это не тот путь, который нужно сделать (однако, он выполняет свою работу).
Как я могу быть уверен, что объект Session запущен до того, как процессор Monolog добавит токен в запись журнала?
Задача ещё не решена.
Других решений пока нет …