2017-05-18 13 views
0

nlogがディスクに書き込んでいるエントリを傍受して、URL/IPアドレスなどの機密情報を難読化したり何らかの形で符号化する必要があります。例えばnlogのログメッセージを傍受する

、もし にそれが http://servername:2212/webservice から変換する必要がありますログインしている任意のURL(HTTP)://サーバー/ 2212/Webサービス

正規表現を取ると変換する任意のnlogパターンがあります別の文字列に?

これを達成するためにログファイルの書き込みを傍受することは可能ですか?

ヘルプ、提案、リダイレクトは本当に役に立ちます。

答えて

1

我々は、.NET 4.5を使用している

、nlog 4.4、C#がすべてのレイアウトレンダラーよりもラップすることができ、ラッパーlayoutrendererを書きます。 。例えばあなたはレイアウト${message}${exception}を持っていた場合、それは次のようになります

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

コード:

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

    /// <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"); 
+0

感謝...私たちは私たちを試してみて、バックできるだけ早く – kgpai

+0

オルタナティブ1の可能性がコメントしましょうTransformメソッドを使用してログテキストを「修正」するrender-wrapperを作成します。レンダーラッパーには、ログテキスト内のテキストパターンにマッチする正規表現のリストがあり、マッチすると標準文字列に置き換えられます。 https://github.com/NLog/NLog/blob/master/src/NLog/LayoutRenderers/Wrappers/Rot13LayoutRendererWrapper.csに似ています。https://github.com/NLog/NLog/wiki/Rot13-Layout-Renderer –

+0

カスタムターゲットラッパーもオプションです。完全なターゲットをラップします。しかし、少し柔軟性がありません。 – Julian

関連する問題