2

複数のログ ファイル (flume とコンソール) にログインしたい。log4j をパッケージ レベルとして設定する方法は?つまり、com.mypackage.myclass を Flume に、他のパッケージをコンソールに設定します。

4

2 に答える 2

0

まず、log4jを2つの名前付きロガーを持つように構成する必要があります。1つはコンソールアペンダーに送信し、もう1つはFlumeに送信します。次に、プロキシクラスを使用して、呼び出し元が含まれているパッケージに応じてlog4j呼び出しをさまざまなロガーにルーティングするロギング呼び出しを行うことができます。これを行うには、次のように現在のスレッドのスタックにアクセスします。

public class Logger
{
    public static org.apache.log4j.Logger getLogger()
    {
            // this will get the calling frame, 0=Thread, 1=this, 2=caller
            StackTraceElement stackElement = Thread.currentThread().getStackTrace()[2];
            if(stackElement.getClassName().startsWith("the.package.that.goes.to.flume"))
            {
                return org.apache.log4j.Logger.getLogger("Flume");
            }
            else
            {
                return org.apache.log4j.Logger.getLogger("Console");
            }
        }
    }
}

上記のコードは、2つのロガーに「Flume」と「Console」という名前を付けていることを前提としています。

アプリでロギング呼び出しを行うときは、log4jに直接アクセスするのではなく、Logger.getLogger()を使用してください。

于 2012-05-02T12:35:37.513 に答える
-2

このブログ投稿を確認してください http://veerasundar.com/blog/2009/07/log4j-tutorial-adding-log4j-logging-to-your-project/

log4j をプロジェクトに追加する方法に関するダウンロード用の完全な PDF があります。

さまざまなパッケージのカテゴリを定義する必要があります。すべて上記の PDF で説明されています。

それが役に立てば幸い。

于 2011-09-29T05:24:27.983 に答える