如何使用NLog正确格式化System.Data.SqlClient.SqlException

时间:2016-09-08 14:56:49

标签: ado.net nlog

当我使用NLog记录SqlException时,格式化的异常中缺少许多重要的属性,例如存储过程名称。

使用NLog记录SqlException的最有效方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以将额外信息写入属性。在这种情况下,流畅的界面是最合适的。

using NLog.Fluent;

...

var sqlCommand = new SqlCommand();
try
{

}
catch (SqlException ex)
{
    Log.Error().Exception(ex)
        .Message("Error in DB")
        .Property("command-text", sqlCommand.CommandText)
        .Property("command-parameters", 
            string.Join(",", sqlCommand.Parameters.Cast<SqlParameter>().Select(p => p.ParameterName + "=" + p.Value)))
        .Write();
}

配置中的用法:

${event-properties:command-text}${event-properties:command-parameters}