スタンドアロンの 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.
ここには派手なものはありません。完全なコードは次のとおりです。
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 を追加した後、問題はなくなりました。