SpringBoot整合log4j2
<dependency> <!-- 引入log4j2依賴 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
去除SpringBoot默認(rèn)的logback配置:
引用log4j2并排除logback
可以使用IDEA中的Maven Helper 插件排除掉logback的配置:
Maven Helper
編寫log4j2配置文件吃引,并在application配置中引用:
sql語句的顯示需要用log4j的實(shí)現(xiàn)
application配置
<!-- 對(duì)應(yīng)數(shù)據(jù)庫表 -->
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="INFO" monitorInterval="5">
<appenders>
<JDBC name="databaseAppender" tableName="fc_log">
<ConnectionFactory class="com.xxxx.xxxx.ConnectionFactory" method="getDatabaseConnection"/>
<!-- pattern中填寫標(biāo)準(zhǔn)的log4j2參數(shù)即可 %msg %d 等 -->
<Column name="log_user" pattern=""/>
<Column name="log_file" pattern=""/>
<Column name="log_line" pattern="%c"/>
<Column name="log_date" pattern="%d{yyyy-MM-dd hh:mm:ss}"/>
<Column name="log_message" pattern="%m"/>
</JDBC>
</appenders>
<loggers>
<logger name="com.xxxx" level="debug">
<AppenderRef ref="databaseAppender" level="debug" />
</logger>
</loggers>
</configuration>
編寫數(shù)據(jù)庫連接池(druid):
public class ConnectionFactory{
private DruidDataSource dataSource;
private static ConnectionFactory connectionFactory;
private Connection getConnection() throws SQLException {
Properties properties = new Properties();
String user = "數(shù)據(jù)庫用戶名";
String password = "數(shù)據(jù)庫密碼";
String url = "jdbc:mysql://localhost:3306/(數(shù)據(jù)庫名稱)?useSSL=false&serverTimezone=GMT%2B8&characterEncoding=utf8";
String driverClassName = "com.mysql.cj.jdbc.Driver";
properties.put("driverClassName",driverClassName);
properties.put("url",url);
properties.put("username",user);
properties.put("password",password);
try {
dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
try {
init();
} catch (Exception e2) {
}
}
return dataSource.getConnection();
}
public static Connection getDatabaseConnection() throws SQLException {
if(connectionFactory == null){
connectionFactory = new ConnectionFactory();
}
return connectionFactory.getConnection();
}
public void init(){
try {
if (dataSource != null)
dataSource.close();
} catch (Exception e) {
}
}
}
最后測(cè)試即可赖晶。
此方法存在一個(gè)待優(yōu)化的點(diǎn),在于數(shù)據(jù)庫性能會(huì)受到影響斜做,且影響較大湿右,期待各位大神的優(yōu)化