0

我想打开所有修改数据库的 SQL 语句的日志记录。我可以通过在配置文件中设置 log_statement 标志在我自己的机器上获得它,但它需要在用户的机器上启用。你如何从程序代码中启用它?(如果重要的话,我将 Python 与 psycopg2 一起使用。)

4

2 回答 2

1

它需要在用户的机器上启用”短语确实令人困惑......我假设你的意思是“从用户(客户端)端”

在 Postgresql 中,一些服务器运行时参数可以从连接更改,但只能从超级用户更改 - 并且仅适用于那些不需要重新启动服务器的设置。我不确定这是否包括许多日志选项。您可以尝试以下方法:

SELECT set_config('log_XXX', 'off', false);

wherelog_XXX将由相应的日志记录设置替换,'false' 由您要设置的值替换。

如果这不起作用,我猜你不走运。

于 2010-05-23T00:15:20.530 回答
1

打开修改数据库的 SQL 语句的日志记录可以通过以下方式实现:

ALTER SYSTEM SET log_statement TO 'mod';

-- Make it effective by triggering configuration reload (no server restart required).
SELECT pg_reload_conf();
-- To make sure the modification is not limited to the current session scope
-- it is better to log out from postgresql and log back in.

-- Check value of log_statement configuration, expected: mod
SELECT * FROM pg_settings WHERE name = 'log_statement';

这需要超级用户访问权限。

查看以下文档链接以获取更多详细信息:

于 2021-08-26T15:05:01.023 回答