仅在 PetaPoco 出现错误时记录 SqlCommand

发布于 2024-12-13 07:41:56 字数 669 浏览 3 评论 0原文

我知道我可以使用 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);
}

当然,我真的不想在生产环境中记录每个命令 + 参数。

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

谢谢!

I know I can log exceptions with PetaPoco thus:

public override void OnException(Exception x)
{
    _logger.LogError(x);
}

I also realize I can dump the command text + params:

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);
}

Naturally, I don't really want to log each command+params in a production environment.

What's the best approach to log the command + params only when an exception is thrown?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

︶ ̄淡然 2024-12-20 07:41:56

你可以试试这个。

public override void OnException(Exception x)
{
    _logger.Log(LastCommand);
    _logger.LogError(x);
}

LastSqlLastArgs 也可用。

You can try this.

public override void OnException(Exception x)
{
    _logger.Log(LastCommand);
    _logger.LogError(x);
}

LastSql and LastArgs are also available.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文