2014-08-21 1 views
0

В настоящее время я планирую рефакторинг системы регистрации на сервере.Регистрация сервера с помощью метаданных сеанса

Я пытался выяснить, какие образцы лучшей практики и дизайна будут использоваться для регистрации событий с помощью метаданных сеанса.

Среди метаданных, необходимых для каждого логарифмического мероприятия:

  1. стороны сервера доступны метаданные - удаленный IP-запроса, в маркере сеанса и т.д.
  2. стороны клиента отправлено метаданных - передается в заголовках запросов или Параметры HTTP GET/POST.

Идеальная ситуация заключалась бы в том, что разработчику необходимо было только передать логгеру «сообщение журнала», а остальные данные будут автоматически добавлены к событию журнала фактическим классом Logger на основе текущие данные сеанса/запроса. (Возможно, установлено в начале каждого сервлета?)

Однако выполнение этого будет означать, что мне нужно будет обновить состояние регистратора в каждом запросе на сеанс - какой тип разрывает апатридность одиночного регистратора.

Я пишу на Java и используя slf4j с log4j, в локальные файлы, которые передаются в Splunk.


Моя первая мысль была использовать свой собственный Logger служебный класс, который будет использовать ThreadLocals для каждого сеанса/клиента полей. Эти члены будут инициализированы в начале каждого сеанса/запроса.

С этой точки, в любое время, когда вызываются методы ведения журнала, они будут использовать эти ThreadLocals для вызова slf4j с моим желаемым форматом сообщений вместе с переданным сообщением.


Будет ли этот дизайн работать в конечном итоге? Как еще вы предлагаете реализовать такой дизайн? Есть ли «лучшие практики», о которых нужно знать?

Спасибо.

ответ

0

Я обнаружил концепцию отображенных диагностики контекста - как объяснена и документированные здесь в LOG4J: http://logging.apache.org/log4j/2.x/manual/thread-context.html

Это на самом деле очень похожая идея на мое предложение относительно ThreadLocals, но как вне в- функциональность коробки - это определенно предпочтительный вариант.

SLF4J и Logback обеспечивают ту же функциональность, что и другие.

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