Мне нужно распечатать имя пользователя и клиентский IP-адрес в logs.but. Имя пользователя - это только печать для первого потока с использованием MDC в log4j. Из следующего потока значения печатаются как пустые. может ли кто-нибудь предложить, как продолжить дальше.Регистрация имени пользователя в log4j
ответ
MDC использует ThreadLocal
для хранения значений. Возможно, Log4J (например, Logback) использует InheritableThreadLocal
, который частично решает такие проблемы, как ваш: вновь созданный поток наследует MDC от родительского потока.
Я предполагаю, что вы используете какой-то пул (мы редко создаем выделенные потоки в среде EE, поэтому наследование MDC не только не помогает, но может вызвать много путаницы, когда пул растет по требованию). К сожалению, в этом случае вам нужно установить MDC явно при переключении на новый поток. Еще более важно, вам нужно очистить после него, иначе поток пула будет «загрязнен» старым MDC.
Например, при отправке сообщения JMS из веб-потока, содержащего допустимое значение MDC, необходимо добавить требуемые значения MDC, например. в заголовки сообщений. Затем, когда вы получите сообщение JMS (в JMS потоке), вам нужно retrive эти значения вручную и зарегистрировать их:
public void onMessage(Message message) {
MDC.put("user", message.getStringProperty("user"));
try {
//handle the message
} finally {
MDC.clear();
}
}
Вы должны выполнить аналогично регистрации каждый раз, когда ваш запрос прыгает в другой поток. Еще раз - очистка очень важное.
- 1. регистрация с использованием Log4j
- 2. Flyway & Log4J Регистрация
- 3. Регистрация Tomcat с использованием log4j?
- 4. распределенная регистрация: JMS и log4j?
- 5. Регистрация на основе уровней log4j
- 6. Регистрация в приложении в разных средах Log4j
- 7. log4j - Конфигурирование имени регистратора
- 8. Регистрация с использованием log4j в SoapUI
- 9. Регистрация Docx4j с log4j в режиме ERROR
- 10. Регистрация log4j сообщение в базе данных
- 11. Регистрация приложений с Log4j в Tomcat 7
- 12. Регистрация пользователя?
- 13. Регистрация зарегистрированного пользователя PHP
- 14. Регистрация пользователя
- 15. Регистрация имени родительского потока в службе исполнителя
- 16. Регистрация имени пользователя всех пользователей, которые вошли в систему сегодня
- 17. Yii2 регистрация пользователя
- 18. Регистрация пользователя в Drupal
- 19. Регистрация пользователя в?
- 20. Регистрация пользователя с сеансами
- 21. Python Регистрация пользователя
- 22. Регистрация имени хоста в CXF
- 23. Apache Log4j Регистрация с определенным часовым поясом
- 24. log4j - Конфигурация, игнорирование lib/jar Регистрация
- 25. Регистрация пользователя пользователя Symfony2 ajax
- 26. Регистрация имени пользователя с помощью Elmah для веб-служб WCF
- 27. Регистрация успешно, но не для сеанса для вызова имени пользователя
- 28. Регистрация на нескольких серверах syslog - log4j
- 29. Регистрация/Регистрация пользователя с помощью quickblox?
- 30. Регистрация пользовательского пользователя в Django
1-Как вы решаете следующую тему? если это следующий запрос, он должен пройти через код, в который вы помещаете значения в MDC. и убедитесь, что вы удаляете значения из MDC только после завершения запроса/потока. –