9

ログバックに問題があります。(mavenを使用して)セットアップしましたが、Logbackが構成ファイルを見つけることができないと報告することを除いて、すべて問題ないようです(ただし、デフォルトのロガー構成を使用してコンソールにログを記録できます)。

[#|2013-07-03T07:55:30.843+0200|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=124;_ThreadName=Thread-2;| 07:54:39,844 |-ch.qos.logback.classic.LoggerContext[default] の INFO - リソース [logback.groovy] が見つかりませんでした

07:54:39,844 |-ch.qos.logback.classic.LoggerContext[default] の INFO - リソース [logback-test.xml] が見つかりませんでした

07:54:39,844 |-ch.qos.logback.classic.LoggerContext の情報 [デフォルト] - リソース [logback.xml] が見つかりませんでした

07:54:39,847 |-INFO in ch.qos.logback.classic.LoggerContext[default] - デフォルト構成のセットアップ。|#]

構成ファイル (logback.xml と呼ばれる) をsrc/main/resourcesMaven アーティファクト (WAR) のフォルダーに入れます。興味深いことに、クラスパスから構成をロードしようとすると、成功します。

Reader r = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("logback.xml"));
StringWriter sw = new StringWriter();
char[] buffer = new char[1024];
for (int n; (n = r.read(buffer)) != -1; )
    sw.write(buffer, 0, n);
String str = sw.toString();
System.out.println(str);

サンプル構成ファイルを出力します。

[#|2013-07-03T07:55:30.844+0200|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=124;_ThreadName=Thread-2;|<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root> </configuration>|#]

Mypom.xmlには次のエントリがあります。

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.0.13</version>
        </dependency>
        
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.0.13</version>
        </dependency>
        
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>

これはWARファイルとして(EARファイル内に)パックされています。WAR ファイル内の logback.xml の場所は次のとおりです。WEB-INF/classes/logback.xml

私のセットアップの何が問題なのか、誰にも分かりますか?

助けてくれて本当にありがとうございます

愚かな羊

4

4 に答える 4

1

ロギング フレームワークの構成ファイルを WAR 内で配信すると、すべてが期待どおりに問題なく動作します。しかし、これを EAR で試してみると、魔法のようなことが起こり、ロギング フレームワークは構成ファイルを見つけることができません。そして、デフォルトの動作を使用します。私は次のようにして解決しました:

  1. EAR フォルダーの直下に新しいフォルダーを作成します。たとえば、「classes」という名前の新しいフォルダーを作成します --> MyEar/classes

  2. logback.xml ファイルをこの新しいフォルダーに置きます: MyEar/classes/logback.xml

  3. WAR ファイルの MANIFEST.MF ファイルで、次の新しいフォルダーをクラスパスに追加します。 Manifest-Version: 1.0 Class-Path: classes

于 2019-04-02T13:29:24.760 に答える