我々は、.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");
感謝...私たちは私たちを試してみて、バックできるだけ早く – kgpai
オルタナティブ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 –
カスタムターゲットラッパーもオプションです。完全なターゲットをラップします。しかし、少し柔軟性がありません。 – Julian