Springboot[日志篇]--集成log4j2输出到mongodb
开启本节之前,有个假设条件,你已经在你的Springboot项目中完成对log4j2的集成。如果还没有,请先阅读另外一篇文章:
Springboot实践--集成log4j2
英文阅读无障碍的童鞋,可以到官方查看文档,有全面介绍,传送门【 官方文档 】1. 增加依赖
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-mongodb3</artifactId> </dependency>
2. 修改log4j2配置文件
<appenders> <!--输出到mongoDB,缓存10M,根据自定义KEY做过滤--> <NoSql name="mongoDB" bufferSize="10"> <Filters> <ContextMapFilter onMatch="ACCEPT" onMismatch="DENY" operator="or"> <KeyValuePair key="idNo" value="00"/> </ContextMapFilter> </Filters> <MongoDb3 databaseName="testDB" collectionName="test_log" server="localhost" port="27017" username="test" password="test2019"> </MongoDb3> </NoSql> </appenders> <loggers> <logger name="org.springframework" level="error"/> <root level="INFO"> <appender-ref ref="mongoDB"/> </root> </loggers>
3.启动类修改
完成以上配置后,日志已经可以正确存入数据库,但是在项目中往往会出现异常抛出
com.mongodb.MongoSocketOpenException: Exception opening socket
原因是springboot中MongoAutoConfiguration.class对mongodb自动配置,我们在配置中未对数据源进行配置,系统会自动连接localhost:27017,显然无法成功。处理方式两种:
方法一:修改启动类(建议)@SpringBootApplication(exclude = {MongoAutoConfiguration.class})
方法二:application.yml中增加数据源配置
spring: data: mongodb: host: 192.168.1.100 port: 27017 database: test username: test password: test2019