Действительно ли асинхронный регистратор log4j2 вставляет данные в MySQL?

#java #mysql #database #jdbc #log4j2

#java #mysql #База данных #jdbc #log4j2

Вопрос:

Я знаю, что log4j2 предназначен для регистрации информации. Я действительно смущен приложением log4jdbc. Что он на самом деле делает? Я читал руководства, но я действительно этого не понимаю. Регистрирует ли он информацию при вставке данных в базу данных через jdbc?? или log4j2 logger действительно может входить в базу данных?

Обычный jdbc может делать такие вещи, как:

 String query ="INSERT INTO 'table' ('blah' ...";
Statement st;
st.executeUpdate(query);
  

действительно ли у асинхронного регистратора log4j есть что-то эквивалентное —> [st.executeUpdate (query);], который вставляет данные намного быстрее??

Спасибо за ваши усилия!!!

Ответ №1:

Приложение log4j2 JDBC будет использовать JDBC и вставлять строки для каждого события журнала.

JDBCAppender записывает события журнала в таблицу реляционной базы данных, используя стандартный JDBC. http://logging.apache.org/log4j/2.x/manual/appenders.html#JDBCAppender

Что касается

действительно ли у асинхронного регистратора log4j есть что-то эквивалентное —> [st.executeUpdate (query);], который вставляет данные намного быстрее??

Асинхронные приложения не выполняют пакетную вставку (пакетное выполнение executeBatch ), на что, я полагаю, вы ссылаетесь. Я предполагаю, что пакетная вставка контролируется bufferSize в приложении JDBC (см. Предыдущую ссылку).

Асинхронные приложения являются декораторами (они обертывают приложения, подобные JDBC), которые просто делают так, чтобы ваш код не блокировался, когда приложение блокируется (т. Е. Когда executeBatch выполняется в этом случае).

Существует также другой проект, который, я думаю, вы путаете с log4jdbc-log4j2. Этот проект будет регистрировать ваши операторы SQL с использованием log4j2.

Комментарии:

1. Спасибо, очень полезно!!