我通过内置日志记录机制记录ServiceStack中的所有API调用。我想知道是否有某种方法可以拦截日志调用并清理数据,然后保存它以摆脱密码之类的东西。
答案 0 :(得分: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是另一个适配器类,它拦截所有日志记录调用,然后您可以执行所需的操作(即擦除日志记录信息),然后再将其委派给基础记录器。