Spring Boot+log4j2+yml配置(2)MongoDB引入

来源:互联网 发布:java自增id生成策略 编辑:程序博客网 时间:2024/05/16 08:37

通过引入MongoDB可以解决分布式不同服务的日志收集


安装MongoDB

关于MongoDB可以参考:http://blog.csdn.net/fangxiaoji/article/details/51175866

安装后输入:./mongo 测试出现下面的提示就正面安装成功

[root@localhost bin]# ./mongo MongoDB shell version v3.4.9connecting to: mongodb://127.0.0.1:27017MongoDB server version: 3.4.9


项目

POM配置引入mongodb依赖

    <dependency>      <groupId>org.mongodb</groupId>      <artifactId>mongodb-driver</artifactId>      <version>3.2.2</version>    </dependency>

application.yml添加配置

 data:   mongodb:     database: test     host: 192.168.1.106     port: 27017

在log4j2的Appenders中添加mongodb的支持,Apache的log4j2手册可以找到配置的属性,手册:http://logging.apache.org/log4j/2.x/manual/appenders.html#NoSQLAppender,对应的yml配置如下

    NoSQL :      name : databaseAppender      MongoDb :        databaseName : test        collectionName : mongoTest        server : 192.168.1.106        port: 27017

运行系统,如果使用idea可以安装Mongo Plugin进行查看

插件:


配置mongodb服务器


查询到结果



在途中可能会遇到问题

第一个就是时间问题,MongoDB中时间的记录总比现在的时间慢8小时,是因为MongoDB数据库保存的时间是ISODate类型,所以会比我们现在的时间慢8小时


第二个在启动服务的时候直接抛出异常

2017-09-23 22:18:25,996 main ERROR Error processing element NoSQL: CLASS_NOT_FOUND2017-09-23 22:18:26,002 main ERROR Unable to locate plugin type for NoSQL2017-09-23 22:18:26,193 main ERROR Unable to locate plugin for MongoDb2017-09-23 22:18:26,194 main ERROR Unable to locate plugin for NoSQL2017-09-23 22:18:26,194 main ERROR Unable to invoke factory method in class class org.apache.logging.log4j.core.config.AppendersPlugin for element Appenders. java.lang.NullPointerExceptionat org.apache.logging.log4j.core.config.plugins.visitors.PluginElementVisitor.visit(PluginElementVisitor.java:52)at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.generateParameters(PluginBuilder.java:243)at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:131)at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:942)at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:882)at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:498)at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:227)at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:239)at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:530)at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:603)at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:620)at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:226)at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:152)at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:103)at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:43)at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:42)at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29)at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:358)at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132)at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:273)at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:179)at app.BootApplication.main(BootApplication.java:16)2017-09-23 22:18:26,249 main ERROR Unable to locate appender "CONSOLE" for logger config "root"2017-09-23 22:18:26,250 main ERROR Unable to locate appender "CONSOLE" for logger config "app.com.kenho.mapper"2017-09-23 22:18:26,250 main ERROR Unable to locate appender "databaseAppender" for logger config "app.com.kenho.mapper"2017-09-23 22:18:27,567 main ERROR Error processing element NoSQL: CLASS_NOT_FOUND2017-09-23 22:18:27,568 main ERROR Unable to locate plugin type for NoSQL2017-09-23 22:18:27,575 main ERROR Unable to locate plugin for MongoDb2017-09-23 22:18:27,575 main ERROR Unable to locate plugin for NoSQL2017-09-23 22:18:27,575 main ERROR Unable to invoke factory method in class class org.apache.logging.log4j.core.config.AppendersPlugin for element Appenders. java.lang.NullPointerExceptionat org.apache.logging.log4j.core.config.plugins.visitors.PluginElementVisitor.visit(PluginElementVisitor.java:52)at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.generateParameters(PluginBuilder.java:243)at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:131)at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:942)at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:882)at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:498)at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:227)at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:239)at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:530)at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:603)at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:620)at org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.reinitialize(Log4J2LoggingSystem.java:194)at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:74)at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:59)at org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.initialize(Log4J2LoggingSystem.java:148)at org.springframework.boot.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:303)at org.springframework.boot.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:276)at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:239)at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:212)at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167)at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:122)at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:74)at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54)at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:325)at org.springframework.boot.SpringApplication.run(SpringApplication.java:296)at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)at app.BootApplication.main(BootApplication.java:16)2017-09-23 22:18:27,578 main ERROR Unable to locate appender "CONSOLE" for logger config "root"2017-09-23 22:18:27,578 main ERROR Unable to locate appender "CONSOLE" for logger config "app.com.kenho.mapper"2017-09-23 22:18:27,579 main ERROR Unable to locate appender "databaseAppender" for logger config "app.com.kenho.mapper"

这个问题换做pro配置文件会抛出另外一个类似的的异常,后来通过查找Apache的问题跟踪系统找到了问题的起因是在log4j2的一个改变,使得在log4j2使用时候还比需要引用别的依赖

    <dependency>      <groupId>org.apache.logging.log4j</groupId>      <artifactId>log4j-nosql</artifactId>      <version>2.9.0</version>    </dependency>

Git:https://github.com/tale2009/springbbot_log4j2_mongodb