errorException消息的NLog参数

Nar*_*kha 6 c# exception-handling nlog

当我用NLog 2.0.1捕获异常时,我正在寻找一种记录表达消息的方法

try {
    ....
}
catch(Exception ex) {
    logger.ErrorException("Error with query {0}", query, ex);
}
Run Code Online (Sandbox Code Playgroud)

但是NLog不支持它.发生在我身上的其他形式是

logger.ErrorException(  String.Format("Error with query {0}", query)) , ex);
Run Code Online (Sandbox Code Playgroud)

要么

logger.Error("Error with query {0} {1} {2}", query, ex.Message, ex.StackTrace);
Run Code Online (Sandbox Code Playgroud)

要么

logger.Error("Error with query {0}", query);
logger.ErrorException("", ex);
Run Code Online (Sandbox Code Playgroud)

要么

LogEventInfo ei = new LogEventInfo(LogLevel.Error, logger.Name, null, 
                         "Error with query {0}", new object[] { query }, ex); 
logger.Log(ei);
Run Code Online (Sandbox Code Playgroud)

但是没有一个像调用那样简单.logger.Error () 目前,第一个选项是我的偏好,尽管格式化一个字符串可能不会被使用:

  • 第二个选项不使用异常的布局选项.
  • 第三个在日志中创建两个条目,可能会令人困惑.
  • 第四种选择不太清楚.

还有一些?

Jul*_*ian 5

更新,

从NLog 4.0开始,这是可能的

logger.Error(ex, "Error with query {0}", query);
Run Code Online (Sandbox Code Playgroud)

查看新闻发布-一致记录异常


Der*_*rek 0

没有其他覆盖。你运气不好。

你的第二个例子看起来不错。

当我查看 Visual Studio 时,Error()有 42 个不同的签名

ErrorException()只有一个。

从以下链接您可以看到这一点:(单击“Error”和“ErrorException”链接)

http://nlog-project.org/documentation/v2.0.1/html/AllMembers_T_NLog_Logger.htm