0

Web アプリケーションのスタンドアロン バージョン (実行可能 jar) をビルドしようとしています。そこで、jetty を使用して war ファイルをロードします。war ファイルには、依存関係として slf4j と logback が既に含まれています。私のスタンドアロン アプリではlogback.xml、ロガー定義を定義する必要があります。

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>    

  <appender name="app" class="ch.qos.logback.core.FileAppender">
    <file>/tmp/app.log</file>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="${log.level}">
    <appender-ref ref="app"/>
  </root>

</configuration>

これは正常に機能しますが、ログ ファイルではなくコンソールに jetty のログ情報が出力されます (アプリのログはすべてログ ファイルに記録されます)。jetty のドキュメントで、埋め込みアプリにもロギング フレームワークを含める必要があることがわかりました。そのため、slf4j と logback を含めましたが、SLF4J: クラス パスには複数の SLF4J バインディングが含まれています。エラーが発生し、ファイルにログインしません。

どうすればこれを修正できますか?

バージョン:

  • 桟橋: 9.0.1.v20130408
  • ログバック: 1.0.7
  • slf4j: 1.7.2
4

1 に答える 1

0

組み込みモードでは、すべてを制御しています。

これが単一の Web アプリケーションである場合は、重複する jar ファイルを削除し、WebAppContext.setParentLoaderPriority(true)1 つの ClassLoader からすべてを設定して使用することを検討してください。

于 2013-04-18T13:46:52.397 に答える