Springboot

Springboot[日志篇]--集成log4j2输出到mong

2019-08-07  本文已影响0人  未知角色

  开启本节之前,有个假设条件,你已经在你的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

\color{red}{end}

上一篇下一篇

猜你喜欢

热点阅读