0

スタンドアロンの 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 を追加した後、問題はなくなりました。

4

2 に答える 2

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>

プラグインのクラスパスに特定のロギング バインディングを提供し、警告を解消します。

于 2013-10-22T15:36:09.947 に答える
0

Flyway-core ロギングは次のように機能します: commons-logging が見つかった場合はそれを使用し、そうでない場合は System.out を使用します。

ネイティブの SLF4J サポートが必要な場合は、Issue Tracker に機能リクエストを提出してください。

あなたの例外に関しては、それは何か他のものから来ています。

于 2013-07-15T11:21:16.657 に答える