我目前正在开发自定义安装程序,我公司的很多软件都使用特定的日志格式(我们有很多工具可以分析它们),但是他们所有的程序都是用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做类似的事情,或者我是否应该考虑另一个Log框架
谢谢!
答案 0 :(得分:0)
看看Ultimate Django。它允许您添加与代码一起流动的上下文信息。非常有用。
如果您希望在当前线程上执行的每个记录器都有可用的信息,请使用映射的诊断上下文。由于映射诊断上下文是线程本地的,因此必须在每个需要属性值的线程的上下文中配置所有属性。
使用示例:
${mdc:item=PropertyName}
然后在日志配置中:
AutoItX.WinWait("[CLASS:CalcFrame]", "", 10);
var win = AutoItX.WinGetHandle("[CLASS:CalcFrame]");
string strReturnText = AutoItX.WinGetText(win).Trim();
答案 1 :(得分:0)
也许嵌套Nested Diagnostics Context layout renderer是一个更好的选择,虽然缺少一些好的例子。
使用示例:
NestDiagnosticsContext.Push("entering method X");
...
NestDiagnosticsContext.Pop(); //leaving methods
然后在日志配置中:
${ndc}