Приложение базы данных log4j не работает должным образом - PullRequest
0 голосов
/ 08 ноября 2018

Мой файл log4j.properties выглядит как

log4j.rootLogger = ERROR,sql, Appender1

log4j.logger.com.endeca=ERROR
log4j.logger.com.endeca.itl.web.metrics=ERROR

log4j.appender.sql=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.sql.URL=jdbc:mysql://192.168.70.39:3306/cortex_mcss_ip
log4j.appender.sql.driver=com.mysql.jdbc.Driver
log4j.appender.sql.user=root
log4j.appender.sql.password=123456
log4j.appender.sql.sql=INSERT INTO errorlog(Level,Msg,CreatedDate) VALUES ('%p','%m',now())
log4j.appender.sql.layout=org.apache.log4j.PatternLayout


log4j.appender.Appender1=org.apache.log4j.ConsoleAppender
log4j.appender.Appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.Appender1.layout.ConversionPattern=%-7p %d [%t] %c %x - %m%n

log4j.appender.Appender2=org.apache.log4j.FileAppender
log4j.appender.Appender2.File=D:/Logs/Log4jWebDemo.log
log4j.appender.Appender2.layout=org.apache.log4j.PatternLayout
log4j.appender.Appender2.layout.ConversionPattern=%-7p %d [%t] %c %x - %m%n

при возникновении ошибки он нормально работает на консоли и файловом аппендиате, но ничего не вставляет в базу данных?

Примечание: параметры базы данных на 100% точны в каждом углу.

Любой, пожалуйста, помогите мне решить эту ... плз ...

1 Ответ

0 голосов
/ 08 ноября 2018

Чтобы напрямую ответить на ваш вопрос: Вы должны отладить этот аппендер, чтобы увидеть, что происходит.

  1. Убедитесь, что драйвер БД (в данном случае mysql) указан в пути к классам приложения.

  2. Убедитесь, что таблица / схема существует, поскольку этот аппендер сам по себе не создает для вас схему

  3. Обратите внимание, что у него есть параметр "bufferSize", поэтому только если число несохраненных сообщений превышает буфер, выполняется фактический запрос БД.

  4. Поместите точку останова на org.apache.log4j.jdbc.JDBCAppender#execute и посмотрите, как она на самом деле выполняется

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

Это приложение не использует пакетные вставки, поддерживаемые, вероятно, всеми современными СУБД. Этот заявитель не использует готовые заявления.

В целом хранение журналов в RDBMS в настоящее время не имеет смысла, журналы предназначены для чтения и анализа, а RDBMS не предлагает действительно удобных инструментов для этого (как визуальных, так и с точки зрения обслуживания: как удалить устаревшие сообщения? Массовое удаление очень дорого, разбиение на разделы? Политики хранения для записей на самом деле не поддерживаются во многих РСУБД ...

Итак, гораздо более современный подход заключается в использовании таких инструментов, как ElasticSearch + Kibana (+ некоторые средства доставки журналов) или даже потоковой передачи журналов в облако (например, Logz.io)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...