本文介绍了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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!