SpringBoot 使用 Log4j2 结合 Mongodb记录日志

文章目录

        • 一、安装Mongodb
        • 二、添加依赖
        • 三、配置Log4j
        • 四、测试

一、安装Mongodb

首先,安装Mongodb,我这里使用的是Linux7,windows版本自行百度。

二、添加依赖

我这里使用的是SpringBoot2.x.x版本,如果发现jar包冲突,不出意外就是别的jar包引入了logback,只需排除logback依赖即可。

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starterartifactId>
    
    <exclusions>
        <exclusion>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-loggingartifactId>
        exclusion>
    exclusions>
dependency>

 
 <dependency>
     <groupId>org.mongodbgroupId>
     <artifactId>mongo-java-driverartifactId>
     <version>3.10.1version>
 dependency>

 
 <dependency>
     <groupId>org.springframework.bootgroupId>
     <artifactId>spring-boot-starter-log4j2artifactId>
 dependency>

 
 
 <dependency>
     <groupId>org.apache.logging.log4jgroupId>
     <artifactId>log4j-coreartifactId>
     <version>2.9.1version>
 dependency>
 
 
 <dependency>
     <groupId>org.apache.logging.log4jgroupId>
     <artifactId>log4j-nosqlartifactId>
     <version>2.9.0version>
 dependency> 

三、配置Log4j

这里使用了多环境配置,在dev中,只在控制台打印日志,test、prod环境只将日志记录在mongodb中。
SpringBoot 使用 Log4j2 结合 Mongodb记录日志_第1张图片
下面给出Log4j2三个环境的配置xml

log4j2-dev.xml




<Configuration status="warn">

    
    <properties>
        
        <property name="pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %C{36}.%M(%F:%L) %msg%xEx%nproperty>
    properties>

    <Appenders>
        <Console name="ConsoleLog" target="SYSTEM_OUT">
            
            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
            
            <PatternLayout charset="UTF-8" pattern="${pattern}"/>
        Console>
    Appenders>

    
    <Loggers>
        
        <logger name="org.springframework" level="warn"/>

        
        <Root level="info">
            
            <appender-ref ref="ConsoleLog"/>
        Root>
    Loggers>

Configuration>

log4j2-test.xml




<Configuration status="warn">

    <Appenders>
        
        <NoSql name="MongoAppender">
            
            <MongoDb databaseName="test" collectionName="log" server="192.168.0.146" port="27017"/>
        NoSql>
    Appenders>

    
    <Loggers>
        
        <logger name="org.springframework" level="warn"/>

        
        <Root level="info">
            
            <appender-ref ref="MongoAppender" />
        Root>
    Loggers>

Configuration>

log4j2-prod.xml




<Configuration status="warn">

    <Appenders>
        
        <NoSql name="MongoAppender">
            
            <MongoDb databaseName="prod" collectionName="log" server="192.168.0.146" port="27017"/>
        NoSql>
    Appenders>

    
    <Loggers>
        
        <logger name="org.springframework" level="warn"/>

        
        <Root level="info">
            
            <appender-ref ref="MongoAppender" />
        Root>
    Loggers>

Configuration>

然后是SpringBoot的配置文件,每个环境指定对应的Log4j的配置即可。

application-dev.yml

# spring boot会自动加载mongodb,这里需要配置mongodb
spring:        
    data:
      mongodb:
        uri: mongodb://192.168.0.146/dev
        port: 27017
logging:
  config: classpath:config/log4j2-dev.xml

application-test.yml

# spring boot会自动加载mongodb,这里需要配置mongodb
spring:        
    data:
      mongodb:
        uri: mongodb://192.168.0.146/test
        port: 27017
logging:
  config: classpath:config/log4j2-test.xml

application-prod.yml

# spring boot会自动加载mongodb,这里需要配置mongodb
spring:        
    data:
      mongodb:
        uri: mongodb://192.168.0.146/prod
        port: 27017
logging:
  config: classpath:config/log4j2-prod.xml

四、测试

现在application.yml中配置profiles为dev

spring:
  profiles:
    active: dev

可以发现日志都正常打印。
SpringBoot 使用 Log4j2 结合 Mongodb记录日志_第2张图片
然后将profiles改为为test

spring:
  profiles:
    active: test

可以看到控制台已经不打印日志
SpringBoot 使用 Log4j2 结合 Mongodb记录日志_第3张图片
我们使用Studio 3T连接mongodb看看
SpringBoot 使用 Log4j2 结合 Mongodb记录日志_第4张图片
SpringBoot 使用 Log4j2 结合 Mongodb记录日志_第5张图片

我们可以看到,多了一个test库,正是我们配置的test库,log集合也有了,prod环境和test环境大同小异,就不多说了。
这里日志成功记录到了mongodb中,但是我们总不可能每次都去mongodb中查看日志,我这里有一个简单的查日志的项目,有兴趣可以看看。

你可能感兴趣的:(SpringBoot,Java,日志)