C# errorException消息的NLog参数

C# errorException消息的NLog参数,c#,exception-handling,nlog,C#,Exception Handling,Nlog,我正在寻找一种在NLOG2.0.1中捕获异常时记录表达性消息的方法,类似于 try { .... } catch(Exception ex) { logger.ErrorException("Error with query {0}", query, ex); } 但NLog不支持它。 发生在我身上的其他形式是 logger.ErrorException( String.Format("Error with query {0}", query)) , ex); 或 或 或

我正在寻找一种在NLOG2.0.1中捕获异常时记录表达性消息的方法,类似于

try {
    ....
}
catch(Exception ex) {
    logger.ErrorException("Error with query {0}", query, ex);
}
但NLog不支持它。 发生在我身上的其他形式是

logger.ErrorException(  String.Format("Error with query {0}", query)) , ex);

但是没有一个比调用
logger.Error()
目前,第一个选项是我的偏好,尽管格式可能不会被使用:

  • 第二个选项不使用的布局选项
  • 第三个在日志中创建了两个条目,可能会让人感到困惑
  • 第四种选择就不那么明确了

还有一些吗?

没有其他覆盖。你真倒霉

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

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

ErrorException()
只有一个

从以下链接可以看到:(单击“错误”和“错误例外”链接)

更新

这是可能的,因为NLog 4.0

logger.Error(ex, "Error with query {0}", query);

请参阅
String.Format(“查询%s时出错”,查询)
这是c#ups吗。。我和java亲热了。为什么不写一个扩展方法呢?很好的特性!我不接受这个答案,因为它是为NLOG2.0.1编写的,但现在很好,因为库已经改进了。当然,尽管我不喜欢未回答的问题
logger.Error("Error with query {0}", query);
logger.ErrorException("", ex);
LogEventInfo ei = new LogEventInfo(LogLevel.Error, logger.Name, null, 
                         "Error with query {0}", new object[] { query }, ex); 
logger.Log(ei);
logger.Error(ex, "Error with query {0}", query);