0.异常

我在IDEA里面用maven构建的应用,每次启动都打印出以下信息,而程序里面的log有的却没有输出。

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
2014-4-10 13:14:18 org.apache.catalina.startup.HostConfig deployDirectory
2014-04-10 13:14:21,411  INFO DefaultLifecycleProcessor:334 - Starting beans in phase 2147483647
2014-04-10 13:14:21,651  INFO ContextLoader:313 - Root WebApplicationContext: initialization completed in 12648 ms
[2014-04-10 01:14:21,663] Artifact dev: Artifact is deployed successfully
[2014-04-10 01:14:21,663] Artifact dev: Deploy took 13,081 milliseconds
SLF4J: Failed to load class "org.slf4j.impl.StaticMDCBinder".
SLF4J: Defaulting to no-operation MDCAdapter implementation.
SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for further details.

1.依赖

看样子是log需要的jar包没有引入或者冲突了,进入刚刚异常信息提示的网址看看,原来是有两个依赖没有引入。

这是我之前的依赖

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

安装网址里面的提示增加以下依赖

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.6</version>
</dependency>

问题仍然没解决,用IDEA的依赖图看看依赖是否有冲突,果真其中的两个依赖已经有了,在这里加入exclusions排除这两个依赖。

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.6</version>
    <exclusions>
        <exclusion>
            <artifactId>slf4j-api</artifactId>
            <groupId>org.slf4j</groupId>
        </exclusion>
        <exclusion>
            <artifactId>log4j</artifactId>
            <groupId>log4j</groupId>
        </exclusion>
    </exclusions>
</dependency>

问题还存在,再查看,其他依赖里面的版本不是1.7.6,而是1.6.6,好吧,把这边改为1.6.6,也不用排除了。

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.6.6</version>
</dependency>

3.原因

折腾了老半天,网上搜索了一些,始终没有解决这个问题,还是在网上在仔细的看看。 终于找到有说是ecplise的m2e插件存在这个Bug,出现的问题都是一样的。可我用的是IDEA呀。

ecplise m2e bug

4.验证

a.用系统安装的maven打包并部署运行,正常
b.用IDEA引用的系统maven部署运行也ok.

5.后记

好吧,并不止eclipse的m2e插件有这个问题,IDEA内部自带的maven打包编译也有这个bug.在IDEA里引入系统的maven也没这问题。 这个问题导致log不能正常输出.