2013-06-21 99 views
3

我通過構建日誌記錄機制在ServiceStack中記錄所有API調用。我想知道是否有某種方法來攔截日誌調用,並在保存數據之前清理數據以擺脫密碼等內容。ServiceStack日誌清理

回答

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是攔截它委託給底層之前記錄所有的日誌調用,然後你可以做你的需要(即擦洗記錄信息),另一個適配器類。

+0

來自其他人的答案只是感覺不對。 – poindexter12