当我在独立的 tomcat 容器中启动我的 web 应用程序时,我看到 Flyway 日志记录正常(如果找到,它使用 commons-logging,否则按照下面 Axel 的说明进行处理)。
但是,当我使用 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.
这里没什么特别的。完整代码如下:
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 都记录良好(尽管我删除了它们以缩小问题范围)。
这是我在类路径中看到的唯一与日志记录相关的 jar:
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 后问题就消失了。
最佳答案
此警告由 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>
将为插件的类路径提供特定的日志记录绑定(bind),从而消除警告。
关于java - Tomcat maven 插件 - 无法加载类 "org.slf4j.impl.StaticLoggerBinder",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17645592/