В настоящее время я планирую рефакторинг системы регистрации на сервере.Регистрация сервера с помощью метаданных сеанса
Я пытался выяснить, какие образцы лучшей практики и дизайна будут использоваться для регистрации событий с помощью метаданных сеанса.
Среди метаданных, необходимых для каждого логарифмического мероприятия:
- стороны сервера доступны метаданные - удаленный IP-запроса, в маркере сеанса и т.д.
- стороны клиента отправлено метаданных - передается в заголовках запросов или Параметры HTTP GET/POST.
Идеальная ситуация заключалась бы в том, что разработчику необходимо было только передать логгеру «сообщение журнала», а остальные данные будут автоматически добавлены к событию журнала фактическим классом Logger на основе текущие данные сеанса/запроса. (Возможно, установлено в начале каждого сервлета?)
Однако выполнение этого будет означать, что мне нужно будет обновить состояние регистратора в каждом запросе на сеанс - какой тип разрывает апатридность одиночного регистратора.
Я пишу на Java и используя slf4j с log4j, в локальные файлы, которые передаются в Splunk.
Моя первая мысль была использовать свой собственный Logger служебный класс, который будет использовать ThreadLocals для каждого сеанса/клиента полей. Эти члены будут инициализированы в начале каждого сеанса/запроса.
С этой точки, в любое время, когда вызываются методы ведения журнала, они будут использовать эти ThreadLocals для вызова slf4j с моим желаемым форматом сообщений вместе с переданным сообщением.
Будет ли этот дизайн работать в конечном итоге? Как еще вы предлагаете реализовать такой дизайн? Есть ли «лучшие практики», о которых нужно знать?
Спасибо.