Хорошее приложение для регистрации базы данных для Java?
На моем рабочем месте мы написали пользовательское приложение log4j, которое записывает сообщения журнала в базу данных (использует асинхронный выделенный поток, поэтому производительность не попадает).
Я предпочитаю это намного больше, чем писать в лог файлы - журнал с базами данных гораздо проще обрабатывать и анализировать.
Есть ли решение с открытым исходным кодом, которое делает это (для конкретного log4j или любого другого java-регистратора)?
Некоторые вещи, которые есть у нашего appender, и я хотел бы увидеть в альтернативе:
- Исключения журналов (duh!)
- Запись базы данных осуществляется из отдельного потока/пула
Наш appender поддерживает следующие столбцы, и я хотел бы видеть их все в любом решении, которое мы находим.
- LOGID
- Время
- сообщение
- StackTrace
- идентификатор процесса
- идентификатор потока
- имя машины
- компонент
- Уровень (debug/info/warn/...)
- ThreadName
Ответы
Ответ 1
Существует также класс DBAppender, предоставляемый log4j (log4j требует наличия определенного набора таблиц для ведения журнала с помощью этого приложения).
http://logging.apache.org/log4j/companions/receivers/apidocs/org/apache/log4j/db/DBAppender.html
Здесь доступен обновленный регистратор ошибок без Apache, который вы также можете попробовать:
http://www.dankomannhaupt.de/projects/index.html
Ответ 2
Просто любопытно, не сильно ли повлияло бы на производительность приложения, принимающего такой appender? Ведение журнала непосредственно в реляционной базе данных является довольно дорогостоящим, даже если вы делаете это асинхронно.
Ответ 3
Для записи в базы данных вам не требуется настраиваемый appender для LOG4J. Вы можете использовать JDBCAppender в комплекте с дистрибутивом Apache.
Согласно документации APACHE, этот API может быть заменен в будущем. Но пока мы используем его, и он работает очень хорошо.