sql >> データベース >  >> RDS >> Mysql

log4j2JDBCManagerがデータベースに接続できません

    解決策は次のとおりです。

    1-接続ファクトリクラスを作成します

    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() {
    
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                System.exit(0);
            }
    
            Properties properties = new Properties();
            properties.setProperty("user", "root");
            properties.setProperty("password", "root");
    
            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();
        }
    }
    

    2-log4j2.xmlと呼ばれるsrc/main/resourcesに構成ファイルを作成します

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="TRACE" monitorInterval="30">
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
            </Console>
            <JDBC name="databaseAppender" tableName="logs">
                <ConnectionFactory class="my.pack.ConnectionFactory"
                    method="getDatabaseConnection" />
                <!-- <Column name="id" literal="LOGGING.APPLICATION_LOG_SEQUENCE.NEXTVAL" /> -->
                <Column name="date" isEventTimestamp="true" />
                <Column name="level" pattern="%level" />
                <Column name="message" pattern="%message" />
                <Column name="class" pattern="%class" /> 
            </JDBC>
        </Appenders>
        <Loggers>
            <Root level="trace">
                <AppenderRef ref="Console" />
                <AppenderRef ref="databaseAppender" />
            </Root>
        </Loggers>
    </Configuration>
    

    3-次のようなテーブルを作成します。

    4-mysqlコネクタを{tomcat}/bin

    に追加します

    Mavenのヒント:

        <commons-dbcp.version>1.4</commons-dbcp.version>
    
        <commons-pool.version>1.6</commons-pool.version>
    
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>${commons-dbcp.version}</version>
        </dependency>
    
        <dependency>
            <groupId>commons-pool</groupId>
            <artifactId>commons-pool</artifactId>
            <version>${commons-pool.version}</version>
        </dependency>
    


    1. 1つのコマンドを使用して複数のデータベースに付与

    2. 読み取り/書き込みモードでデータベースを開くことができません

    3. MySQLでJSONを解析する

    4. 給与データモデル