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