是否可以为 Postgresql 中的特定数据库设置单独的日志文件?

是否可以为 Postgresql 中的特定数据库设置单独的日志文件?

更新 我的意思是每个数据库可以有多个日志文件吗?可能不行,但我很好奇 Postgresql 是否有这样的开箱即用功能,或者您是否需要第三方产品或构建自己的应用程序来执行此操作。

我从另一个人那里看到线你可以这样做:

更改数据库your_database_name SET log_statement ='all';

我正在浏览在线文档,找到了这个链接日志记录

和:

log_filename (字符串) 当启用logging_collector时,此参数设置创建的日志文件的文件名。该值被视为strftime模式,因此可以使用%-escapes指定随时间变化的文件名。(请注意,如果有任何与时区相关的%-escapes,则计算将在log_timezone指定的区域中完成。)支持的%-escapes类似于Open Group的strftime规范中列出的%-escapes。请注意,系统的strftime不直接使用,因此特定于平台的(非标准)扩展不起作用。默认值为postgresql-%Y-%m-%d_%H%M%S.log。

如果指定不带转义符的文件名,则应计划使用日志轮换实用程序以避免最终填满整个磁盘。在 8.4 之前的版本中,如果不存在 % 转义符,PostgreSQL 将附加新日志文件创建时间的纪元,但现在不再如此。如果在 log_destination 中启用了 CSV 格式输出,则 .csv 将附加到带时间戳的日志文件名以创建 CSV 格式输出的文件名。(如果 log_filename 以 .log 结尾,则将替换后缀。)

此参数只能在 postgresql.conf 文件或服务器命令行中设置。

嘘,有没有什么办法可以仅为服务器上的特定数据库设置日志记录?有人尝试过吗?

答案1

您可以设置全局的log_statement=none。然后针对特定的数据库:

ALTER DATABASE my_db_name set log_statement='all'

我的全局配置中也有这个,所以日志文件显示数据库名称和用户。
log_line_prefix = '< %m %d %u >'

相关内容