阿里云優(yōu)惠神卷并淋、最高優(yōu)惠25%,值得擁有:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ryr8l9eb&utm_source=ryr8l9eb
背景
最近在進行大量數(shù)據(jù)的清洗和轉換工作珍昨,因為涉及的數(shù)據(jù)量和表的個數(shù)較多县耽,采用線程池的方式來進行多線程跑批處理句喷。每個表和每個數(shù)據(jù)的清洗是不同的線程,一旦發(fā)生異常酬诀,需要快速排查某個現(xiàn)場的執(zhí)行異常脏嚷,采用傳統(tǒng)的文本來進行排查或者通過日志解析后來排查,排查效率是非常低下的瞒御。如果可以通過數(shù)據(jù)的日志來排查呢父叙?是否更加簡單快捷?
無法輕易追溯的文本日志
工具選型
通過考慮肴裙,log4j2和logback都能夠支持異步輸出到DB的趾唱。筆者選用的是logback,主要是因為spring boot admin支持對logback進行日志級別的動態(tài)控制蜻懦。
spring boot admin動態(tài)日志級別控制
數(shù)據(jù)庫日志
配置步驟
Mave依賴
1甜癞、spring boot
1、spring boot admin 依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>
<properties>
<java.version>1.7</java.version>
<boot.admin.version>1.4.2</boot.admin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server</artifactId>
<version>${boot.admin.version}</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>${boot.admin.version}</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>${boot.admin.version}</version>
</dependency>
<dependencies>
2宛乃、logback數(shù)據(jù)庫操作依賴
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0</version>
</dependency>
配置
1悠咱、application.yml
logging:
level:
tk.mybatis: DEBUG
path: /log
server:
port: 8080
spring:
application:
name: ace-admin
boot:
admin:
url: http://localhost:${server.port}
2、logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="oracle" class="ch.qos.logback.classic.db.DBAppender">
<connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
<driverClass>oracle.jdbc.driver.OracleDriver</driverClass>
<jdbcUrl>jdbc:oracle:thin:@//localhost:1521/xxx</jdbcUrl>
<user>xxxx</user>
<password>xxxx</password>
</dataSource>
</connectionSource>
</appender>
<!-- 針對性配置需要輸出到數(shù)據(jù)庫的包目錄和日志初始級別 -->
<logger name="com.github.wxiaoqi.security" level="debug">
<appender-ref ref="oracle" />
</logger>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<jmxConfigurator/>
</configuration>
數(shù)據(jù)庫準備
驗證
spring boot admin驗證
效果如圖
logback db輸出日志驗證
根據(jù)日志輸出的需要征炼,配置(logback.xml)需要往數(shù)據(jù)庫輸出的日志的包路徑和級別析既。
<logger name="com.github.wxiaoqi.security" level="debug">
<appender-ref ref="oracle" />
</logger>