5

これは良いことですか。このような方法でログインするには?

public static void log(final Object... messages) {
    logger.info(Joiner.on(',').useForNull("null").join(messages));
}

// コードの他の部分では、文字列連結の代わりにコンマを使用してロガー メソッドを呼び出すことができます。Joiner はグアバクラスであることに注意してください。

log(" Check ",obja.getXXX(),anotherObject.getMethod());

期待されるのは、クリーンなコード、利便性、およびパフォーマンスです。

4

3 に答える 3

4

私はSLF4JLoggerインターフェース ( Logback実装を使用) を使用していますが、これは読みやすくなっています。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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

    public void method(String name, int age, Address address) {
        logger.info("Person {}, age {} years old resides at {}", name, age, address);
    }
}
于 2013-02-05T16:22:59.103 に答える
2

' 'おそらくコンマではなく (空白) で結合したいと思うでしょうが、設計アプローチは良い考えです。

パフォーマンスに関しては、理想的ではありません。追加のオブジェクト配列とジョイナー、およびジョイナーの内部バッファーを作成します。

したがって、このアプローチでは 2/3 を取得できます。パフォーマンスが本当に気になる場合は、すでに同様のアプローチを使用しているslf4jを使用してください。

于 2013-02-05T16:22:28.717 に答える
2

他の回答が言うように、SLF4Jのインターフェースは優れています。

これがどのようにパフォーマンスを向上させるのか理解できません。おそらく、OPには特定のユースケースが念頭にあり、いくつかのサンプルコードがそれを説明します。前もってメッセージを収集し、それらをまとめてログ メソッドの呼び出しに送信することが目的である場合は、バッファリングを行うアペンダーを使用することをお勧めします。

于 2013-02-05T16:24:33.303 に答える