本文介绍了NLOG定制layoutrenderer的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

任何一个可以提供我n日志非常样定做layoutrenderer的?

can any one provide me of a very sample custom layoutrenderer for nlog ?

我想打压痕,而IM记录,通过实例

I want to make indentation while im logging , by example

如果IM调用从方法C方法B

if im calling Method B from Method C

文本日志文件是这样的:

the Text log file goes like this :

Inside Method C
       Inside Method B

等等。

推荐答案

在这里它是:

[LayoutRenderer("IndentationLayout")]
    public sealed class IndentationLayoutRenderer : LayoutRenderer
    {
        // Value to substract from stack count
        private uint _ignore = 12;

    // Value to pad with.
    private string _ipadding = "| ";

    /// <summary>Set the number of (top) stackframes to ignore</summary>
    public uint Ignore
    {
        get { return _ignore; }
        set { _ignore = value; }
    }

    /// <summary>Set the padding value</summary>
    public string IndentationPadding
    {
        get { return _ipadding; }
        set { _ipadding = value; }
    }

    protected override void Append(StringBuilder builder, LogEventInfo ev)
    {
        // Get current stack depth, insert padding chars.
        StackTrace st = new StackTrace();
        long indent = st.FrameCount;
        indent = indent > _ignore ? indent - _ignore : 0;
        for (int i = 0; i < indent; ++i)
        {
            builder.Append(_ipadding);
        }
    }
}



注册:

Registration:

if(NLog.Config.ConfigurationItemFactory.Default.LayoutRenderers.AllRegisteredItems.ContainsKey(
                "IndentationLayout"))
                return;

            NLog.Config.ConfigurationItemFactory.Default.LayoutRenderers.RegisterDefinition("IndentationLayout", typeof(IndentationLayoutRenderer));

这篇关于NLOG定制layoutrenderer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-27 00:46