Spring Boot 多线程开发之异步日志
2017-06-02 22:13
387 查看
背景
最近在进行大量数据的清洗和转换工作,因为涉及的数据量和表的个数较多,采用线程池的方式来进行多线程跑批处理。每个表和每个数据的清洗是不同的线程,一旦发生异常,需要快速排查某个现场的执行异常,采用传统的文本来进行排查或者通过日志解析后来排查,排查效率是非常低下的。如果可以通过数据的日志来排查呢?是否更加简单快捷?工具选型
通过考虑,log4j2和logback都能够支持异步输出到DB的。笔者选用的是logback,主要是因为spring boot admin支持对logback进行日志级别的动态控制。配置步骤
Mave依赖
1、spring boot1、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数据库操作依赖
<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.ymllogging: level: tk.mybatis: DEBUG path: /log server: port: 8080 spring: application: name: ace-admin boot: admin: url: http://localhost:${server.port}[/code]
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> <!-- 针对性配置需要输出到数据库的包目录和日志初始级别 --> <logger name="com.github.wxiaoqi.security" level="debug"> <appender-ref ref="oracle" /> </logger> <include resource="org/springframework/boot/logging/logback/base.xml"/> <jmxConfigurator/> </configuration>数据库准备
logback数据库脚本下载验证
spring boot admin验证
访问地址:http://localhost:8080/logback db输出日志验证
根据日志输出的需要,配置(logback.xml)需要往数据库输出的日志的包路径和级别。<logger name="com.github.wxiaoqi.security" level="debug"> <appender-ref ref="oracle" /> </logger>
相关文章推荐
- SpringBoot使用多线程实现异步调用
- springboot开发日志(1): pom
- springboot开发日志(3): thymeleaf模板标签不闭合报错
- SpringBoot | 第二十一章:异步开发之异步调用
- springbank 开发日志 一次因为多线程问题导致的applicationContext.getBean()阻塞
- 【HAVENT原创】Spring Boot + Kafka 消息日志开发
- spring boot中多线程开发的注意事项总结
- springboot开发日志(4): mybatis找不到mapper
- springboot开发日志(2): 找不到html页面
- spring boot 多线程,异步方法和异步类的注解使用
- @Aspect统一处理Web请求日志--Spring Boot--Java EE开发,原来可以这样!
- springboot开发日志(4): thymeleaf模板 自定义404和500页面
- Spring Boot实践应用开发(2)
- 如何在openshift上diy部署spring-boot并在本地用eclipse开发
- Spring Boot实践应用开发(4)
- Spring Boot实践应用开发(3)
- Spring Boot开发