首先,安装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>
这里使用了多环境配置,在dev中,只在控制台打印日志,test、prod环境只将日志记录在mongodb中。
下面给出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
可以发现日志都正常打印。
然后将profiles改为为test
spring:
profiles:
active: test
可以看到控制台已经不打印日志
我们使用Studio 3T连接mongodb
看看
我们可以看到,多了一个test库,正是我们配置的test库,log集合也有了,prod环境和test环境大同小异,就不多说了。
这里日志成功记录到了mongodb中,但是我们总不可能每次都去mongodb中查看日志,我这里有一个简单的查日志的项目,有兴趣可以看看。