2013-07-15 72 views
0

当我在独立的tomcat容器中启动我的webapp时,我看到Flyway记录正常(如果找到,它会使用公共日志记录,否则如Axel下面)。Tomcat maven插件 - 无法加载类“org.slf4j.impl.StaticLoggerBinder”

然而,当我使用的Apache Tomcat Maven插件(tomcat7 - Maven的插件),我看到以下内容:

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. 

没有看中这里。下面是完整的代码:

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

<listener> 
    <listener-class>com.blah.conf.FlywayListener</listener-class> 
</listener> 

我使用logback-classic进行日志记录。 Jersey和Guice都记录得很好(虽然我删除了它们以缩小问题的范围)。

我这里还有唯一的记录相关的罐子我在classpath中看到:

logback-classic-1.0.13 
logback-core-1.0.13 
slf4j-api-1.7.5 

这里的依赖关系树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 

所以我更新的问题是,为什么是有区别使用Tomcat的Maven插件与独立?我在临时部署的“目标”文件夹中看不到任何其他jar。

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

+0

添加jcl-over-slf4j后,问题消失了。 – nogridbag

回答

0

航道核心日志记录工作如下:如果发现公用日志记录使用它,否则使用System.out。

如果您想要本机SLF4J支持,请在问题跟踪器中提交功能请求。

至于你的例外,这是来自别的东西。

+0

谢谢Axel。奇怪的是,SLF4J警告只出现在我添加三行Flyway代码时。如果我删除它们,警告就会消失 - 所以我认为它是Flyway。我会尽力进一步缩小问题的范围。 – nogridbag

+1

我缩小了这个问题 - 使用单个上下文侦听器执行Flyway迁移的简单Web应用程序。 tomcat maven插件(tomcat7-maven-plugin)似乎是根本原因。我会更新这个问题。谢谢。 – nogridbag

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> 

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

相关问题