我只想在有异常时编写堆栈跟踪,目前我这样做
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
需要创意如何...
答案 0 :(得分:13)
您可以使用以下布局:
${longdate}|${level}|${message} ${onexception:${exception:format=tostring} | ${stacktrace}}
答案 1 :(得分:2)
是的,在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
您将从异常中获取堆栈跟踪。