6

NLog 2.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("Error with query {0} {1} {2}", query, ex.Message, ex.StackTrace);

また

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 () 、使用されない可能性のある文字列をフォーマットするにもかかわらず、現時点では最初のオプションが私のお気に入りです。

  • 2 番目のオプションは、例外のレイアウト オプションを使用しません。
  • 3 番目は、ログに 2 つのエントリを作成し、混乱を招く可能性があります。
  • 4 番目のオプションはあまり明確ではありません。

もう少しありますか?

4

2 に答える 2

5

アップデート、

これは、NLog 4.0 以降で可能です。

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

ニュース投稿を参照- 例外の一貫したログ記録

于 2016-08-23T22:36:38.933 に答える
0

他のオーバーライドはありません。あなたは運が悪いです。

あなたの2番目の例は見栄えがします。

Visual Studioを見ると、Error()42の異なる署名があります

ErrorException()1つだけ持っています。

次のリンクからこれを見ることができます: (「エラー」および「ErrorException」リンクをクリックします)

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

于 2013-09-16T14:14:51.743 に答える