问题描述
嗨,汤姆,
我已经使用DBMS_UTILITY.FORMAT_ERROR_BACKTRACE来了解使用外部服务暴露的包中发生错误的确切行。
但是,我的一位客户认为我应该在某些行之后编写诊断消息,以了解失败的代码。
考虑到if循环仍将执行以了解是否放置诊断消息,我认为这会降低性能。
在提供实时SQL中:
有2个街区
first_block_example -- 代码审阅者使用简单日志消息推荐的代码格式
second_block_example -- 我开发的代码格式,使用dbms_utility.format_error_backtrace
我已经使用DBMS_UTILITY.FORMAT_ERROR_BACKTRACE来了解使用外部服务暴露的包中发生错误的确切行。
但是,我的一位客户认为我应该在某些行之后编写诊断消息,以了解失败的代码。
考虑到if循环仍将执行以了解是否放置诊断消息,我认为这会降低性能。
在提供实时SQL中:
有2个街区
first_block_example -- 代码审阅者使用简单日志消息推荐的代码格式
second_block_example -- 我开发的代码格式,使用dbms_utility.format_error_backtrace
专家解答
你们都是对的!(栅栏坐着怎么样?;)
你应该广泛地使用你的代码。也就是说,在几乎每个语句之前/之后都有日志记录。这使得您的代码更容易调试。
但是!
这种细粒度的日志记录通常会使您的应用程序在生产中减速太多。
所以常见的做法是在不同的级别登录,例如:
-调试
-信息
-警告
-错误
使此可配置,因此您可以选择为每个环境捕获多少日志记录。在开发中,这通常将是一切。在生产中只有错误和警告。
错误日志将捕获回溯信息,以便您可以看到它发生的位置。如果您在生产中捕获这些错误,则可能需要获取更多详细信息以解决问题。在这种情况下,暂时增加日志记录级别以获取所需的内容。然后只在完成后将其切换回错误/警告。
Logger是一个很好的开源实用程序,可以帮助您解决这个问题。我建议你使用它:
https://github.com/OraOpenSource/Logger
你应该广泛地使用你的代码。也就是说,在几乎每个语句之前/之后都有日志记录。这使得您的代码更容易调试。
但是!
这种细粒度的日志记录通常会使您的应用程序在生产中减速太多。
所以常见的做法是在不同的级别登录,例如:
-调试
-信息
-警告
-错误
使此可配置,因此您可以选择为每个环境捕获多少日志记录。在开发中,这通常将是一切。在生产中只有错误和警告。
错误日志将捕获回溯信息,以便您可以看到它发生的位置。如果您在生产中捕获这些错误,则可能需要获取更多详细信息以解决问题。在这种情况下,暂时增加日志记录级别以获取所需的内容。然后只在完成后将其切换回错误/警告。
Logger是一个很好的开源实用程序,可以帮助您解决这个问题。我建议你使用它:
https://github.com/OraOpenSource/Logger
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




