c# – 仅在抛出异常时将堆栈跟踪写入日志文件

我只想在有异常时编写堆栈跟踪,目前我这样做

 layout="${longdate}|${level}|${message} ${exception:format=tostring} | ${stacktrace}"

所以我总是在我的日志文件中得到它.

编辑:

我将这个布局用于我的所有日​​志记录,所以当我没有任何异常时我也会得到堆栈跟踪.但是只有当我有一些异常时才需要它

当我有一个例外我有以下输出,它是我需要的

2011-07-01 22:59:02.3782|Debug|fffffffffffffffffffffffffffff System.Exception: Exception of type 'System.Exception' was thrown. | AppDomain.ExecuteAssembly => AppDomain._nExecuteAssembly => Program.Main

但无一例外:

2011-07-01 22:57:26.7117|Trace|fffffffffffffffffffffffffffff  | AppDomain.ExecuteAssembly => AppDomain._nExecuteAssembly => Program.Main

但我只想要

2011-07-01 22:57:26.7117|Trace|fffffffffffffffffffffffffffff

需要创意如何做到这一点……

最佳答案
是的,在NLog中,您可以使用不同级别的警告,错误信息等.您还可以使用ErrorException,WarnException,InfoException来记录异常. IE

logger.Error("This is an error message");

如果要显示异常,请使用以下命令.

logger.ErrorException("This is an error with an Exception", e);

更新:

<target name="Errors" xsi:type="File" fileName="${logDirectory}/ErrorLog.txt" layout="${longdate} ${message} ${exception:format=tostring}"/>

删除{stacktrace}

更新:

Exception e = new Exception();
e.StackTrace // <= The exception holds the stack trace

您将从异常中获取堆栈跟踪.

转载注明原文:c# – 仅在抛出异常时将堆栈跟踪写入日志文件 - 代码日志