Распределенная регистрация с JMS и logback - PullRequest
5 голосов
/ 11 марта 2011

Я работаю над проектом по объединению данных журналов с нескольких машин в одну БД.

Я должен регистрировать сценарии:

  1. обычная регистрация исключений и регистрация разработчиков, например разработчик поворачивает уровень для отладки.
  2. Журнал "Аудит". Специальные сценарии необходимо регистрировать в отдельной БД с отдельной структурой.

Я использую logback и JMS. «Клиент» записывает в очередь JMS, а «Сервер» читает очередь формы и записывает в БД.

Я ищу простой способ различения двух типов журналов. То, что я хотел бы сделать, это создать еще один уровень журнала, например, «Аудит», который я мог бы затем проверить на стороне «сервера», создать нашу специальную объектную структуру и записать в нашу отдельную БД.

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

Я бы хотел, чтобы разработчик просто сделал log.debug для отладки, log.error для ошибок и log.audit для аудита.

Любой совет, кто-нибудь должен был решить аналогичную проблему?

1 Ответ

3 голосов
/ 11 марта 2011

Прежде всего, почему бы просто не использовать DBAppender и войти непосредственно в базу данных, пропуская слой JMS? Logback предоставляет средства для асинхронного ведения журнала , если вам важна производительность.

Что касается фильтрации, отдельный логгер - это самый простой и чистый способ сделать это (а затем просто отфильтровать по логгеру / категории). Этот подход подчеркивает тот факт, что это специальные журналы, а не обычная отладка приложения. Я бы даже подумал об обертывании этого журнала аудита в какой-либо сервис / аспект, чтобы отделить его от бизнес-логики.

Если вы действительно хотите повторно использовать существующие средства ведения журнала, вы можете использовать Logback filters для отправки и фильтрации событий во время выполнения.

...