2

3 つの異なる slf4j ロガーを作成したクラスがあります。

package x.y.z;

public class MyClass {
    private static final Logger logger1 = LoggerFactory.getLogger(MyClass.class);
    private static final Logger logger2 = LoggerFactory.getLogger(MyClass.class + "-a);
    private static final Logger logger3 = LoggerFactory.getLogger(MyClass.class + "-b);

    public void myMethod() {
         // some code that logs to all loggers at debug level
    }
}

奇妙なことに、xyzMyClass がデバッグ レベルで構成されていても、MyClass-a および MyClass-b ロガーはデバッグ レベルでログを記録せず、代わりに構成されたルート レベル (私の場合は情報) でログを記録します。以下に示すように、-a および -b に特定のロガーを指定しても機能しません。ルートをデバッグに変更するまで、デバッグ レベルでログを記録しません。本当にこれに困惑しています、何かアイデアはありますか?

<configuration scan="true" scanPeriod="30 seconds">

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
   ....
  </appender>

  <logger name="x.y.z.MyClass" level="DEBUG" />
  <logger name="x.y.z.MyClass-a" level="DEBUG" />
  <logger name="x.y.z.MyClass-b" level="DEBUG" />

  <root>
    <level value="info" />
    <appender-ref ref="FILE" />
  </root>
</configuration>
4

1 に答える 1

1

ログ構成で間違ったクラス名について言及したためです。

<logger name="x.y.z.MyClass" level="DEBUG" />それは違いない
<logger name="x.y.z.myClass" level="DEBUG" />

クラス仕様を次のように変更することをお勧めしますpublic class MyClass { }

編集:

<logger name="x.y.z" level="DEBUG"/>同等のlog4jプロパティがパッケージ名のみを指定してみてくださいlog4j.logger.x.y.z=DEBUG

于 2013-11-06T11:24:27.643 に答える