[英]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.