5

すべてのアペンダーを 1 つのロガー インスタンスにアタッチする方法を探しています。

私は試した:

Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
hierarchy.GetAppenders()

ドキュメントによると、これは現在構成されているすべてのロガーのすべてのアペンダーを返します。

これを試すと:

LogManager.GetLogger("MyLoggerName").Logger.Repository.GetAppenders();

同じ結果が得られます。

1 つのロガー (この場合は「MyLoggerName」) にアタッチされているアペンダーのみを取得したい

どこが間違っていますか?

4

1 に答える 1

5

次のコードを呼び出すと

LogManager.GetLogger("MyLoggerName").Logger.Repository.GetAppenders();

実際には、によって返される型を実装する継承のhierarchy.GetAppenders()ため、まったく同じデータを求めています。HierarchyLoggerRepositorySkeletonILoggerRepositoryLogger.Repository

Loggerただし、名前空間に存在するクラスを使用して、「最初のレベル」のアペンダーのリストを取得できHierarchyます。

var h = LogManager.GetRepository() as Hierarchy;
var l = h.GetLogger("MyLoggerName", h.LoggerFactory);
// do something with the l.Appenders property

バッファリングやそこからのアペンダーのフィルタリングなどの特別なケースを処理する必要があります

于 2014-08-19T10:08:13.403 に答える