.net - 使用 NLog 记录异常时如何获取堆栈跟踪?

标签 .net exception stack-trace nlog

当我使用 NLog 的默认布局时,它只打印异常的名称。 有人告诉我 log4jxmlevent 布局不会打印任何有关异常的信息。 什么布局对我有帮助?

示例代码:

try
{
    throw new SystemException();
}
catch (Exception ex)
{
    logger.Error("oi", ex);
}

默认布局输出:

2011-01-14 09:14:48.0343|ERROR|ConsoleApplication.Program|oi

log4jxmlevent 输出:

<log4j:event logger="ConsoleApplication.Program"
           level="ERROR"
           timestamp="1295003776872"
           thread="9">
<log4j:message>oi</log4j:message>
<log4j:NDC />
<log4j:locationInfo class="ConsoleApplication.Program"
                    method="Void Main(System.String[])"
                    file="C:\Users\User\Documents\Visual Studio 2010\Projects\ConsoleApplication\ConsoleApplication\Program.cs"
                    line="21" />
<nlog:eventSequenceNumber>3</nlog:eventSequenceNumber>
<nlog:locationInfo assembly="ConsoleApplication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<log4j:properties>
  <log4j:data name="log4japp"
              value="true" />
  <log4j:data name="log4jmachinename"
              value="MACHINE" />
</log4j:properties>

最佳答案

How to Log Exceptions 中所述从 NLog 4.0 开始,将异常作为第一个参数传递给 Error,例如这样:

logger.Error(ex, "ex");

和自定义布局

layout="${exception:format=ToString}${newline}"

关于.net - 使用 NLog 记录异常时如何获取堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4684399/

相关文章:

c# - 从 2D 矩阵中切片 Span<T> 行 - 不确定为什么会这样

python - 如何提示程序员在python中使用try except子句?

c++ - 编译器错误 : looser throw specifier for destuctor

java - 如何为处理其他异常时抛出的异常获取正确链接的堆栈跟踪?

c# - 了解非法的通用转换

c# - 选择 View 模型时如何在 IQueryable 中添加新的 where 条件?

c# - 无法将类型 'int' 隐式转换为 'short'?

c# - Foreach 在带有元素的非空 IEnumerable 上抛出 NullReferenceException

java - NullPointerException 堆栈跟踪在没有调试代理的情况下不可用

delphi - madExcept,获取当前堆栈的顶部