slf4j日志选择策略

我在项目中配置了slf4j和morphia

  <dependency>
            <groupId>org.mongodb.morphia</groupId>
            <artifactId>morphia</artifactId>
            <version>1.3.1</version>
        </dependency>
        <!-- slf4j依赖 -->
        <dependency>
                 <groupId>org.slf4j</groupId>
                 <artifactId>slf4j-simple</artifactId>
                 <version>1.7.5</version>
             </dependency> 

日志配置如下

   private static Logger logger = LoggerFactory.getLogger(MongodbTest.class);
    /**
     * 列举全部数据库名
     */
    @Test
    public void testSlf4j(){
        logger.debug("lalalala");
        logger.warn("lalala");
        logger.info("lalala");
    }

下面是输出信息

四月 23, 2018 3:59:18 下午 org.mongodb.morphia.logging.MorphiaLoggerFactory chooseLoggerFactory
信息: LoggerImplFactory set to org.mongodb.morphia.logging.jdk.JDKLoggerFactory
[main] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [springconfig.xml]
[main] INFO org.springframework.context.support.GenericApplicationContext - Refreshing org.springframework.context.support.GenericApplicationContext@9597028: startup date [Mon Apr 23 15:59:19 CST 2018]; root of context hierarchy
[main] WARN shenzhen.MongodbTest - lalala
[main] INFO shenzhen.MongodbTest - lalala

为什么slf4j选择morphia的日志而不是选择slf4j的simple日志

阅读 3.1k
1 个回答

如果你想用slf4j的日志模块,引入org.mongodb.morphia的时候,要排除掉其日志部分。
出现该现象的原因是,log找实现类的时候,先找到了mongodb的日志实现类并做了实例化。
maven配置引用排除:

<exclusions>
    <exclusion>
        <groupId> XXXXXX </groupId>
        <artifactId> XXXXXX </artifactId>
    </exclusion>
</exclusions>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进