Реализация Custom Logger с slf4j - PullRequest
32 голосов
/ 16 апреля 2010

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

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

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

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

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

Ответы [ 2 ]

32 голосов
/ 16 апреля 2010

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

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

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

5 голосов
/ 28 мая 2013

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

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

...