Вы можете написать свой собственный Appender, увеличив org.apache.log4j.AppenderSkeleton
. Вы можете сделать его настраиваемым для нескольких хранилищ данных и определить, как разделить LoggingEvent , где вы можете получить отдельную информацию в виде номера строки, имени класса, сообщения, серьезности регистратора и т.д.
public class StorageBasedAppender
extends AppenderSkeleton
{
[...]
@Override
protected void append(LoggingEvent event)
{
// Write to your database or other storages
}
}
Вы можете улучшить этот класс, сделав его настраиваемым и не только. Если вам не нужно что-то конкретное, в отношении других вопросов используйте JDBCAppenderConfiguration . Который может быть легко настроен
<appender name="jdbcAppender" class="org.apache.log4j.jdbc.JDBCAppender">
<param name="URL" value="jdbc:oracle:thin:@sd1.hbs.edu:1521:sc1" />
<param name="Driver" value="oracle.jdbc.driver.OracleDriver" />
<param name="User" value="user" />
<param name="Password" value="password" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="INSERT INTO LOGGING_SAMPLES_TEST
(log_date, log_level, location, message)
VALUES ( '%d{ISO8601}','%p', '%C;%L', '%m' )"
/>
</layout>
</appender>