Eonil Asked: 2013-04-08 23:17:12 +0800 CST2013-04-08 23:17:12 +0800 CST 2013-04-08 23:17:12 +0800 CST 如何关闭生产服务器上的所有 RAISE NOTICE? 772 我在函数中放置了很多 RAISE NOTICE 用于调试目的。我认为这会影响性能,因此应该在生产环境中删除它们。有没有办法只在特定条件下选择退出这些日志记录/断言功能? postgresql logs 1 个回答 Voted Best Answer Craig Ringer 2013-04-08T23:22:56+08:002013-04-08T23:22:56+08:00 您可以将它们包装在一个IF测试自定义配置变量的子句中。这将起作用,但它有点冗长,并且 PL/PgSQL 中的每个语句都有成本。 我怀疑您最好降低RAISE消息中的日志级别,以便您登录默认情况下DEBUG不会捕获的级别。log_min_messages这样你就可以通过改变client_min_messages或打开它log_min_messages。 RAISE请参阅语句的扩展形式,例如: RAISE DEBUG USING MESSAGE = 'TheMessage'; 请参阅该RAISE声明的文档。 或者,您可以将消息保留在RAISE NOTICE并提高日志级别,但这可能会隐藏您希望在日志中看到的其他信息。最好一开始以较低的优先级记录。 只要通知没有进行大量昂贵的字符串格式化或被大量调用,我怀疑在日志级别抑制记录到文件/客户端时,您不会对它们的性能影响有太多麻烦。
您可以将它们包装在一个
IF
测试自定义配置变量的子句中。这将起作用,但它有点冗长,并且 PL/PgSQL 中的每个语句都有成本。我怀疑您最好降低
RAISE
消息中的日志级别,以便您登录默认情况下DEBUG
不会捕获的级别。log_min_messages
这样你就可以通过改变client_min_messages
或打开它log_min_messages
。RAISE
请参阅语句的扩展形式,例如:请参阅该
RAISE
声明的文档。或者,您可以将消息保留在
RAISE NOTICE
并提高日志级别,但这可能会隐藏您希望在日志中看到的其他信息。最好一开始以较低的优先级记录。只要通知没有进行大量昂贵的字符串格式化或被大量调用,我怀疑在日志级别抑制记录到文件/客户端时,您不会对它们的性能影响有太多麻烦。