Подтвердить что ты не робот

Внедрение пользовательского регистратора с slf4j

Я хочу реализовать пользовательский регистратор, который регистрирует все записи журнала в базе данных. В настоящее время мое приложение регистрируется таким образом (привязка slf4j и log4j):

private static final Logger logger = LoggerFactory.getLogger( MyClass.class );

Я не уверен, как действовать дальше. Моя идея заключается в реализации пользовательской привязки журнала через реализацию org.slf4j.Logger Interface

Какими будут следующие шаги? Моя цель - не изменять текущий код

Ссылки, которые я рассматривал:

4b9b3361

Ответ 1

это должно быть довольно легко. вам нужно будет реализовать свои собственные Logger и LoggerFactory. вам вообще не придется менять существующий код.

после этого вам нужно реализовать StaticLoggerBinder, чтобы вернуть ваш журнал factory и имя класса. если вы загрузите zf файл slf4j, вы также получите источник для всех реализаций, просто посмотрите на StaticLoggerBinder в slf4j-log4j для примера.

см. эту ссылку для получения дополнительной информации: http://www.slf4j.org/faq.html#slf4j_compatible

Ответ 2

Вам не нужно писать собственную реализацию ведения журнала, как насчет переключения рамки ведения журнала на logback? Loback поддерживает запись в базу данных изначально. Поскольку вы используете API SLF4J, оба раза ваш код не изменится.

Взгляните на ch.qos.logback.classic.db.DBAppender. Если макет таблицы по умолчанию не соответствует вашим потребностям, вы можете реализовать ch.qos.logback.classic.db.names.DBNameResolver, чтобы настроить таблицу и coloum.