Используйте AsyncAppender и присоедините к нему DBAppender.
Что-то вроде этого для асинхронной части:
<async-handler name="ASYNC">
<level name="DEBUG"/>
<queue-length value="1024"/>
<overflow-action value="BLOCK"/>
<subhandlers>
<handler name="CONSOLE"/> <!-- if you have these defined -->
<handler name="FILE"/> <!-- if you have these defined -->
<handler name="DB"/>
</subhandlers>
</async-handler>
А затем определите DB как DBAppender (или JDBCAppender в зависимости от того, что выустановили).
<log4j-appender name="DB" class="org.apache.log4j.jdbc.JDBCAppender">
<error-manager>
<only-once/>
</error-manager>
<level name="INFO"/>
<properties>
<property name="URL">jdbc:postgresql://localhost:5432/data</property>
<property name="driver">org.postgresql.Driver</property>
<property name="user">admin</property>
<property name="password">admin</property>
</properties>
<formatter>
<pattern-formatter pattern="insert into Log values (current_timestamp,'%c', '%t','%p','%m')" />
</formatter>
</log4j-appender>