3

組み込みのロギング メカニズムを使用して、ServiceStack のすべての API 呼び出しをログに記録しています。ログ呼び出しを傍受し、データをスクラブしてから保存してパスワードなどを取り除く方法があるかどうか疑問に思っています。

4

1 に答える 1

3

現在構成されているロガーへのプロキシのように機能する独自のアダプターILogFactoryとクラスを実装することができます。ILog

LogManager.LogFactory = new ScrubberLogFactory(LogManager.LogFactory);

ScrubberLogFactory は単なるラッパーであり、実際の LogFactory への呼び出しを委任します。たとえば、次のようになります。

class ScrubberLogFactory : ILogFactory
{
  ILogFactory logFactory;

  public ScrubberLogFactory(ILogFactory logFactory)
  {
    this.logFactory = logFactory;
  }

  public ILog GetLogger(Type type)
  {
    return new ScrubLogger(logfactory.GetLogger(type));
  }

  public ILog GetLogger(string typeName)
  {
    return new ScrubLogger(logfactory.GetLogger(typeName));
  }
}

ScrubLogger は、すべてのロギング呼び出しをインターセプトする別のアダプター クラスであり、基になるロガーに委譲する前に、必要なことを行う (つまり、ロギング情報をスクラブする) ことができます。

于 2013-06-21T20:57:06.837 に答える