Решение: использование log4j с AsynAppender и JDBCAppender.
Вы можете настроить размер буфера вашего AsynAppender в файле log4j.xml. Затем, когда буфер заполнен, он будет использовать JDBCAppender для очистки всего в базе данных.
например:
<appender name="DB" class="org.apache.log4j.jdbc.JDBCAppender">
....
your DB CONFIG
<appender name="PerfAppender" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="5000" />
<appender-ref ref="DB" />
</appender>
Таким образом, он делает то, что вы описываете, и вам даже не нужно писать строку кода ;-) ну почти ...
Подробнее:
Вы можете сохранить данные, используя MDC log4J. MDC - это в основном хэш-карта, в которой вы можете хранить данные, которые вы хотите записать (ключ, значение). Затем в файле log4j.xml вы можете получить доступ к данным в MDC с помощью% X.
например:
<appender name="DB" class="org.apache.log4j.jdbc.JDBCAppender">
<param name="URL" value="yoururlconnection" />
<param name="Driver" value="com.ibm.db2.jcc.DB2Driver" />
<param name="User" value="myuser" />
<param name="Password" value="mypassord" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="INSERT INTO mytable (field1, field2, etc) VALUES
('%X{value1}', '%X{value2}', etc)" />
</layout>
</appender>