Реализация Custom Logger с slf4j
Я хочу реализовать Custom logger, который записывает все записи журнала в базу данных. В настоящее время мое приложение регистрирует этот путь (привязка slf4j и log4j):
private static final Logger logger = LoggerFactory.getLogger( MyClass.class );
Я не уверен, как поступить. Моя идея заключается в реализации привязки Custom Logging через реализацию интерфейса org.slf4j.Logger
Каковы будут следующие шаги? Моя цель - не менять текущий код
Ссылки, которые я рассмотрел:
2 ответа
Это должно быть довольно легко. вам нужно будет реализовать свой собственный Logger
а также LoggerFactory
, вам не придется менять существующий код вообще.
после этого вам нужно будет реализовать StaticLoggerBinder
вернуть фабрику логгера и имя класса. если вы загрузите zip-файл slf4j, то вы также получите исходный код для всех реализаций, просто посмотрите на StaticLoggerBinder в slf4j-log4j для примера.
посмотрите на эту ссылку для деталей: http://www.slf4j.org/faq.html
Вам не нужно писать собственную реализацию журналирования, как насчет переключения каркаса журналирования на logback? Loback изначально поддерживает ведение журнала в базе данных. Поскольку вы используете API SLF4J оба раза, ваш код не изменится.
Взгляните на ch.qos.logback.classic.db.DBAppender. Если макет таблицы по умолчанию не соответствует вашим потребностям, вы можете реализовать ch.qos.logback.classic.db.names.DBNameResolver, чтобы настроить имена таблиц и столбцов.