Вложенный диагностический контекст Log4j NDC

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

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

Спасибо за любую помощь.

1 ответ

Решение

Управление NDC осуществляется отдельно для каждого потока - это означает, что если вы поместите идентификатор сеанса в стек в одном потоке, а затем вызовете метод в другом потоке, идентификатор вашего сеанса не будет представлен.

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

Другие вопросы по тегам