0

プロジェクトで ASP.NET MVC、Castle Windsor、および Log4Net を使用しています。

ロギング コンポーネントに次のようなものがあります。

public class Log4NetLoggerService : ILoggerService
{
    private readonly ILog _logger;

    public Log4NetLoggerService()
    {
        _logger = LogManager.GetLogger(typeof(Log4NetLoggerService));
    }
}

しかしもちろん、これによりログファイルに「Log4NetLoggerService」が表示されます...

今、私が望むのは、ログ コンポーネントが解決/構築されているコンシューマ クラスを調べることです

StackFrame クラスを使用してみましたが、うまくいきませんでした (ロギング サービスが暗黙的に (IoC) 解決されるか、IKernel.Resolve への直接呼び出しを使用して解決される可能性があるため)。

Windsor フレームワークでこれを行う方法がいくつかあるはずですが、何も見つかりませんでした...

ありがとう!

4

1 に答える 1

1

コンストラクターで型を取得しないのはなぜですか?

 public Log4NetLoggerService(Type loggingComponentType)
{
    _logger = LogManager.GetLogger(loggingComponentType);
}

コンポーネントでロガーを静的メンバーとして使用している場合は、タイプを 1 回送信するだけで済みます。

于 2012-05-21T12:31:29.163 に答える