Asp.net mvc 3 仅在出现错误w/PetaPoco时记录SqlCommand

Asp.net mvc 3 仅在出现错误w/PetaPoco时记录SqlCommand,asp.net-mvc-3,petapoco,Asp.net Mvc 3,Petapoco,我知道我可以用PetaPoco记录异常,因此: public override void OnException(Exception x) { _logger.LogError(x); } 我还意识到我可以转储命令文本+参数: public override void OnExecutingCommand(System.Data.IDbCommand cmd) { _logger.LogInfo(cmd.CommandText); foreach (SqlParamet

我知道我可以用PetaPoco记录异常,因此:

public override void OnException(Exception x)
{
    _logger.LogError(x);
}
我还意识到我可以转储命令文本+参数:

public override void OnExecutingCommand(System.Data.IDbCommand cmd)
{
    _logger.LogInfo(cmd.CommandText);
    foreach (SqlParameter sqlParam in cmd.Parameters)
    {
        _logger.LogInfo(String.Format("Name: {0}; Value: {1}; SqlValue: {1}", sqlParam.ParameterName,
                                      sqlParam.Value, sqlParam.SqlValue));
    }
    base.OnExecutingCommand(cmd);
}
当然,我并不想在生产环境中记录每个命令+参数

当抛出异常时,仅记录命令+参数的最佳方法是什么

谢谢

你可以试试这个

public override void OnException(Exception x)
{
    _logger.Log(LastCommand);
    _logger.LogError(x);
}
LastSql
LastArgs
也可用