我只记录了问题日志异常消息。
NLog config:
<target name="logfile"
xsi:type="File"
fileName="log.txt"
layout="${longdate} | ${machinename} | ${processid} | ${processname} | ${level} | ${logger} | |${message} | ${exception:format=tostring}" />
<logger name="*"
minlevel="Info"
writeTo="logfile" />
用法:
private static Logger _logger = LogManager.GetCurrentClassLogger();
_logger.Error("my message", new Exception("my exception"));
日志输出:
2014-04-24 18:17:29.0841 | PC_NAME | 6464 | APP_NAME.vshost | Error | AppName.ViewModel | my message |
例外是忽略。
我发现了一些thread,但对我来说不行。
答案 0 :(得分:1)
Nlog使用特殊方法记录使用<loglevel>Exception
命名架构的异常。
因此,在您的情况下,您需要使用ErrorException
方法才能正确记录异常:
private static Logger _logger = LogManager.GetCurrentClassLogger();
_logger.ErrorException("my message", new Exception("my exception"));
答案 1 :(得分:0)
实际上,void Error(string message, Exception exception);
已过时
您可以使用下面的ILogger.Error(Exception, string)
方法
catch (Exception e)
{
Log.Error(e, "it happens");
}
并使用${onexception}
进行了一些修改后的布局。这将检查是否有要记录的异常
<target name="logfile"
xsi:type="File"
fileName="log.txt"
layout="${longdate} | ${machinename} | ${processid} | ${processname} | ${level} | ${logger} | |${message} ${onexception:| ${exception:format=tostring}}" />
/&GT;