Tomcat maven插件 - 无法加载类"org.slf4j.impl.StaticLoggerBinder"

nog*_*bag 0 java logging logback slf4j tomcat7

当我在一个独立的tomcat容器中启动我的webapp时,我看到Flyway日志记录正常(如果找到则使用commons-logging,如下面的Axel所述,则使用sout).

但是,当我使用apache tomcat maven插件(tomcat7-maven-plugin)时,我看到以下内容:

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.
Run Code Online (Sandbox Code Playgroud)

没什么好看的.这是完整的代码:

public void contextInitialized(ServletContextEvent sce) {
    Flyway flyway = new Flyway();
    flyway.setDataSource(...);
    flyway.migrate();
}

<listener>
    <listener-class>com.blah.conf.FlywayListener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)

我正在使用logback-classic进行日志记录.泽西和吉斯都记录正常(虽然我删除它们以缩小问题范围).

这是我在类路径中看到的唯一与日志相关的jar:

logback-classic-1.0.13
logback-core-1.0.13
slf4j-api-1.7.5
Run Code Online (Sandbox Code Playgroud)

这是slf4j的依赖树:

mvn dependency:tree -Dverbose -Dincludes=org.slf4j
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ hello ---
[INFO] com.hello:hello:war:1.0-SNAPSHOT
[INFO] \- ch.qos.logback:logback-classic:jar:1.0.13:compile
[INFO]    \- org.slf4j:slf4j-api:jar:1.7.5:compile
Run Code Online (Sandbox Code Playgroud)

所以我更新的问题是,为什么使用tomcat maven插件vs独立存在差异?我没有在"target"文件夹中看到临时部署的任何其他jar.

更新:添加jcl-over-slf4j后,问题就消失了.

Gab*_*res 5

tomcat7-maven-plugin发出此警告.

将插件声明为:

<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.1</version>
  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-simple</artifactId>
      <version>1.7.5</version>
    </dependency>
  </dependencies>
</plugin>
Run Code Online (Sandbox Code Playgroud)

将提供特定的日志绑定到插件的类路径,使警告消失.