簡體   English   中英

在nlog中攔截日志消息

[英]Intercepting log messages in nlog

我們需要攔截nlog寫入磁盤的條目,以便可以混淆或以某種方式對任何URL / IP地址和類似的安全敏感信息進行編碼。

例如,如果記錄了任何URL,則應將其從http:// servername:2212 / webservice轉換為(http):// servername / 2212 / webservice

是否有任何采用正則表達式並轉換為另一個字符串的nlog模式?

還是可以攔截日志文件的寫入來實現此目的?

任何幫助,建議或重定向都將真正有用。

我們正在使用.NET 4.5,nlog 4.4,C#

編寫一個包裝器layoutrenderer,可以包裝比所有布局渲染器。 例如,如果您有布局${message}${exception} ,它將是

${intercept:inner=${message}${exception}} 

碼:

[LayoutRenderer("intercept")]
public sealed class InterceptLayoutRendererWrapper : WrapperLayoutRendererBase
{

    /// <summary>
    /// Option you could set from config or code
    /// </summary>
    [DefaultValue(true)]
    public bool Option1 { get; set; }


    /// <summary>
    /// Renders the inner layout contents.

    /// OR override TransformFormattedMesssage, and change the stringbuilder (less string allocations)
    /// </summary>
    /// <param name="logEvent">The log event.</param>
    /// <returns>Contents of inner layout.</returns>
    protected override string RenderInner(LogEventInfo logEvent)
    {
        var text = this.Inner.Render(logEvent);
        return interceptSomething(text);
    }

}

並注冊:

LayoutRenderer.Register<InterceptLayoutRendererWrapper>("intercept"); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM