2016-09-08 7 views
1

Когда я регистрирую SqlException с NLog, многие из его важных свойств, таких как имя хранимой процедуры, отсутствуют в форматированном исключении.Как правильно форматировать System.Data.SqlClient.SqlException с помощью NLog

Что было бы самым эффективным способом регистрации SqlException с помощью NLog?

ответ

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}