日志记录应用程序块 - 记录呼叫者(Logging Application Block - Logg

2019-09-16 08:19发布

当与log4net的记录它很容易把类称为日志到日志文件。 我已经在过去发现,这使得它很容易通过代码跟踪和识破类的流量。 在log4net的我用%记录财产,像这样的转换模式:

<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />

这给我我想要的输出:

2008-09-19 15:40:26,906 [3132] ERROR <b>Log4NetTechDemo.Tester</b> [(null)] - Failed method

您可以从已调用日志类是Log4NetTechDemo.Tester输出看到的,这样我就可以跟踪误差回到那类很容易。

在登录一个应用阻止我无法弄清楚如何使用一个简单的日志来完成这一操作。 有谁知道它是如何做呢? 如果是这样,一个例子或步骤,这样做将是非常有益的。

Answer 1:

调用方法添加到LogEntry的ExtendedProperties字典; 假设你没有删除从格式化模板ExtendedProperties令牌,当然。

把这样的事情在一个日志包装:

public void LogSomething(string msg)
{
  LogEntry le = new LogEntry { Message = msg };
  le.ExtendedProperties.Add("Called from", new StackFrame(1).GetMethod().ReflectedType);
  Logger.Write(le);
}

调用此产生像这样在日志的末尾:

Extended Properties: Called from - LAB_Demo.Tester


Answer 2:

我们没有带发现没有击中堆栈跟踪的简单方法。 如果它是一个例外,我们只是从抢:

 StackTrace trace = new StackTrace(ex, true);
 StackFrame frame = trace.GetFrame(0);

对于健谈的项目,我们只是写的字符串。 我们有一个片段,是能够抢在插入类名。 我们还声明常量字符串与类名。

不漂亮,但它是我们已经找到最好的。 我希望别人在这个线程bettwe答案:)



文章来源: Logging Application Block - Logging the caller