2013-03-21 2 views
1

Когда пользователь отправляет запрос в мое веб-приложение, идентификатор сеанса пользователя добавляется в стек NDC, который должен использоваться в файлах журнала log4j, но по какой-то причине, когда я вызываю другой метод, Идентификатор сеанса, похоже, не находится в лог-вызовах внутри этого метода. Хотя, как только этот метод завершит оставшуюся часть процесса, все еще сохраняется идентификатор сеанса в файлах журнала.Log4j Вложенный диагностический контекст NDC

Я не слишком уверен, почему это происходит, и задавался вопросом, знает ли кто-нибудь, почему это может быть или есть какие-либо теории о причине потери идентификатора сеанса?

Спасибо за предоставленную помощь.

ответ

1

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

Мне трудно ответить без контекста вашего кода ... Если вы разместите свой код, я мог бы, возможно, дать конкретный ответ.

+1

Привет, Извините, забыл обновить этот вопрос с ответом. Вызывается метод, начинающийся с нового потока. Мне удалось сохранить идентификатор сеанса, передав его конструктору класса, который начинал новый поток, используя NDC.peek() – Arran

 Смежные вопросы

  • Нет связанных вопросов^_^