Spring Cloud Spring Boot mybatis分布式微服务云架构(四十二)使用log4j实现http请求日志入mongodb(1)
2018-03-09 09:59
1346 查看
准备工作
可以先拿Chapter4-2-4工程为基础,进行后续的实验改造。该工程实现了一个简单的REST接口,一个对web层的切面,并在web层切面前后记录http请求的日志内容。通过自定义appender实现
思路:log4j提供的输出器实现自Appender接口,要自定义appender输出到MongoDB,只需要继承AppenderSkeleton类,并实现几个方法即可完成。引入mongodb的驱动
在pom.xml中引入下面依赖<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver</artifactId> <version>3.2.2</version> </dependency>
实现MongoAppender
编写MongoAppender类继承AppenderSkeleton,实现如下:public class MongoAppender extends AppenderSkeleton { private MongoClient mongoClient; private MongoDatabase mongoDatabase; private MongoCollection<BasicDBObject> logsCollection; private String connectionUrl; private String databaseName; private String collectionName; @Override protected void append(LoggingEvent loggingEvent) { if(mongoDatabase == null) { MongoClientURI connectionString = new MongoClientURI(connectionUrl); mongoClient = new MongoClient(connectionString); mongoDatabase = mongoClient.getDatabase(databaseName); logsCollection = mongoDatabase.getCollection(collectionName, BasicDBObject.class); } logsCollection.insertOne((BasicDBObject) loggingEvent.getMessage()); } @Override public void close() { if(mongoClient != null) { mongoClient.close(); } } @Override public boolean requiresLayout() { return false; } // 省略getter和setter }
定义MongoDB的配置参数,可通过log4j.properties配置:
connectionUrl:连接mongodb的串
databaseName:数据库名
collectionName:集合名
定义MongoDB的连接和操作对象,根据log4j.properties配置的参数初始化:
mongoClient:mongodb的连接客户端
mongoDatabase:记录日志的数据库
logsCollection:记录日志的集合
重写append函数:
根据log4j.properties中的配置创建mongodb连接
LoggingEvent提供getMessage()函数来获取日志消息
往配置的记录日志的collection中插入日志消息
重写close函数:关闭mongodb的
源码来源
相关文章推荐
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四十三)使用log4j实现http请求日志入mongodb(2)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(三十八)使用log4j记录日志
- Spring Cloud Spring Boot mybatis分布式微服务云架构(三十九)对log4j进行多环境不同日志级别的控制
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四十)使用AOP统一处理Web请求日志(1)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四十一)实现Web层的日志切面
- Spring Cloud Spring Boot mybatis分布式微服务云架构(三十四)注解配置与EhCache使用(2)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(九)使用Swagger2构建强大的RESTful API文档(1)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(十六)使用JdbcTemplate操作数据库
- Spring Cloud Spring Boot mybatis分布式微服务云架构(二十三)使用MongoDB数据库(1)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(二十八)使用Flyway来管理数据库版本
- Spring Cloud Spring Boot mybatis分布式微服务云架构(九)使用Swagger2构建强大的RESTful API文档(1)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(二十七)使用MyBatis注解配置详解(2)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(二)使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程
- Spring Cloud Spring Boot mybatis分布式微服务云架构(十三)使用Spring Security安全控制
- Spring Cloud Spring Boot mybatis分布式微服务云架构(三十三)注解配置与EhCache使用(1)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(二)使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程
- Spring Cloud Spring Boot mybatis分布式微服务云架构(十三)使用Spring Security安全控制
- Spring Cloud Spring Boot mybatis分布式微服务云架构(二十四)使用MongoDB数据库(2)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(十)使用Swagger2构建强大的RESTful API文档(2)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(三十五)使用Redis做集中式缓存(1)