log4j2 JdbcAppender 官网配置

来源:互联网 发布:自学小提琴 知乎 编辑:程序博客网 时间:2024/05/16 07:09

JdbcAppender 构造函数:

@PluginFactory    public static JdbcAppender createAppender(            @PluginAttribute("name") final String name,            @PluginAttribute("ignoreExceptions") final String ignore,            @PluginElement("Filter") final Filter filter,            @PluginElement("ConnectionSource") final ConnectionSource connectionSource,            @PluginAttribute("bufferSize") final String bufferSize,            @PluginAttribute("tableName") final String tableName,            @PluginElement("ColumnConfigs") final ColumnConfig[] columnConfigs) {


log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?><Configuration status="error">  <Appenders>    <JDBC name="databaseAppender" tableName="LOGGING.APPLICATION_LOG">      <ConnectionFactory class="net.example.db.ConnectionFactory" method="getDatabaseConnection" /> <!-- 数据库连接-->      <Column name="EVENT_ID" literal="LOGGING.APPLICATION_LOG_SEQUENCE.NEXTVAL" />       <!-- name:字段;literal:值;pattern:使用log4j内置变量;isEventTimestamp:时间戳-->      <Column name="EVENT_DATE" isEventTimestamp="true" />      <Column name="LEVEL" pattern="%level" />      <Column name="LOGGER" pattern="%logger" />      <Column name="MESSAGE" pattern="%message" />      <Column name="THROWABLE" pattern="%ex{full}" />    </JDBC>  </Appenders>  <Loggers>    <Root level="warn">      <AppenderRef ref="databaseAppender"/>    </Root>  </Loggers></Configuration>

java:

package net.example.db; import java.sql.Connection;import java.sql.SQLException;import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp.DriverManagerConnectionFactory;import org.apache.commons.dbcp.PoolableConnection;import org.apache.commons.dbcp.PoolableConnectionFactory;import org.apache.commons.dbcp.PoolingDataSource;import org.apache.commons.pool.impl.GenericObjectPool; public class ConnectionFactory {    private static interface Singleton {        final ConnectionFactory INSTANCE = new ConnectionFactory();    }     private final DataSource dataSource;     private ConnectionFactory() {        Properties properties = new Properties();        properties.setProperty("user", "logging");        properties.setProperty("password", "abc123"); // or get properties from some configuration file         GenericObjectPool<PoolableConnection> pool = new GenericObjectPool<PoolableConnection>();        DriverManagerConnectionFactory connectionFactory = new DriverManagerConnectionFactory(                "jdbc:mysql://example.org:3306/exampleDb", properties        );        new PoolableConnectionFactory(                connectionFactory, pool, null, "SELECT 1", 3, false, false, Connection.TRANSACTION_READ_COMMITTED        );         this.dataSource = new PoolingDataSource(pool);    }     public static Connection getDatabaseConnection() throws SQLException {        return Singleton.INSTANCE.dataSource.getConnection();    }}



0 0
原创粉丝点击