5

ロギングに logback を使用していますが、スタック トレースのフィルタリングに問題があることがわかりました。私はこのような構造を持っています:

public class Main {
    static final Logger logger = (Logger) LoggerFactory.getLogger(Main.class);

    public static void main(String[] args) {
        logger.debug("Start");

        MyObject1 loggingElement = new MyObject1();
        loggingElement.logg();

        logger.debug("End");
    }
}


public class MyObject1 {

    public MyObject2 obj;
    static final Logger logger = (Logger) LoggerFactory.getLogger(MyObject1.class);

    public MyObject1() {
        obj = new MyObject2();
    }
    public void logg() {
        obj.loggError();
    }
}
public class MyObject2 {
    static final Logger logger = (Logger) LoggerFactory.getLogger(MyObject2.class);

    public void loggError() {
        logger.error("Error info", new Throwable("Error"));
    }
}

および次のような構成xml:

<property name="mask" 
            value="MyObject2"/>


<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{HH:mm:ss} | %level | %-4thread | %-21logger | %m%n
        </pattern>
    </encoder>
</appender>

<root level="${root.level:-TRACE}">
    <appender-ref ref="STDOUT" />
</root>

main メソッドを実行すると、次のような出力が得られます。

12:29:35 | DEBUG | main | com.logging.Main      | Start
12:29:35 | ERROR | main | com.logging.MyObject2 | Error info
java.lang.Throwable: Error
    at com.logging.MyObject2.loggError(MyObject2.java:11) [bin/:na]
    at com.logging.MyObject1.logg(MyObject1.java:17) [bin/:na]
    at com.logging.Main.main(Main.java:14) [bin/:na]
12:29:35 | DEBUG | main | com.logging.Main      | End

「MyObject1」を含む行を削除し、残りのスタック トレースは int のようにそのままにしておきます: http://java.dzone.com/articles/filtering-stack-trace-hell

logback の設定を変更してみました

<pattern>%d{HH:mm:ss} | %level | %-4thread | %-21logger | %m%n%ex{full,${mask}}
</pattern>

まったく機能しません

<pattern>%d{HH:mm:ss} | %level | %-4thread | %-21logger | %m%n%eXe{full,${mask}}
            </pattern>

スタックトレース全体を削除します(私にとっては解決策ではありません)

誰でも役立つことを知っていますか?

4

2 に答える 2

6

この機能は、バージョン 1.1.3 の時点で Logback Classic に含まれています。以下の PatternLayout の変換語に当てはまるようです。

于 2015-04-24T15:38:06.873 に答える