Nlog -添加深度数据
本文关键字:数据 深度 添加 Nlog | 更新日期: 2023-09-27 18:07:05
我目前正在做一个自定义安装程序,我公司的很多软件都使用一种特定的日志格式(我们有很多工具来分析它们),但是他们所有的程序都是用Delphi编写的,我正在做的项目使用c#,所以我不能直接重用库。
所以我试图格式化NLog的输出以适应我们的格式,同时仍然有一个"标准"输出,并能够直接在WPF控件中输出日志。
我们有所有常用的日志级别(调试,信息,警告,错误,…),但我们也有深度机制。基本上我们可以这样写:
log.Info("Hey");
log.BeginBlock("Some logs");
for(....)
{
instructions;
log.Error("...");
}
log.EndBlock();
log.Info(".");
基本上输出将是:
Time Deepness Message Warning Error
[TIME] 1 Hey 0 0
[TIME] 1 Some logs 0 0
[TIME] 2 ... 0 1
[TIME] 1 . 0 0
所以我想知道我是否可以用NLog做类似的事情,或者我是否应该考虑另一个日志框架
谢谢!
看一下Mapped Diagnostics Context布局渲染器。它允许您添加与代码一起流动的上下文信息。非常有用。
当您拥有希望当前线程上执行的每个日志记录器都可用的信息时,请使用映射的诊断上下文。由于映射的诊断上下文是线程本地的,因此必须在需要属性值的每个线程的上下文中配置所有属性。
示例用法:
MappedDiagnosticsContext.Set("PropertyName", "PropertyValue");
然后在日志配置中:
${mdc:item=PropertyName}
也许嵌套的嵌套诊断上下文布局渲染器是一个更好的选择,尽管缺少一些好的例子。
示例用法:
NestDiagnosticsContext.Push("entering method X");
...
NestDiagnosticsContext.Pop(); //leaving methods
然后在日志配置中:
${ndc}
另见NestedDiagnosticsContext类文档