我有一个spring引导应用程序,我想在这个应用程序中使用log4j。问题是我有一个类似于(log4j2.xml)的jdbc附加器;
<JDBC name="customDBAppender" tableName="mytable">
<ConnectionFactory
class="com.example.logger.ConnectionFactory" method="getConnection" />
....
</JDBC>
我有一个静态getconnection方法,我需要在这个方法中访问我的数据库属性(用户名、密码)。
我认为log4j使用反射来创建与这个方法的连接(甚至在spring上下文初始化之前),所以我不能用spring注入我的数据库属性。有没有办法注入这个属性?
我的连接工厂类;
public class ConnectionFactory {
public static Connection getConnection() throws SQLException {
Connection connection = new Connection("dbusername", "dbpassword".....)
....
}
}
1条答案
按热度按时间qzlgjiam1#
正如您所猜测的,您不能这样配置您的jdbc appender。相反,您需要从log4j2配置中删除jdbc appender,并在bean中实际地创建它。例如,在
@Configuration
豆子。另外请注意,即使这样做,你也应该使用一个连接池而不是一个连接池,否则会降低应用程序的性能。
请按以下步骤操作: