ServiceStack日志清理

时间:2013-06-21 20:47:05

标签: logging servicestack

我通过内置日志记录机制记录ServiceStack中的所有API调用。我想知道是否有某种方法可以拦截日志调用并清理数据,然后保存它以摆脱密码之类的东西。

1 个答案:

答案 0 :(得分:3)

您可以实现自己的适配器ILogFactoryILog类,它们就像当前配置的记录器的代理一样,例如:

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是另一个适配器类,它拦截所有日志记录调用,然后您可以执行所需的操作(即擦除日志记录信息),然后再将其委派给基础记录器。