pg_ls_logdir()

用于检查日志目录内容的系统函数

pg_ls_logdir() 是一个用于检查 PostgreSQL 日志目录内容的系统函数,该目录由配置参数 log_directory 定义。

pg_ls_logdir()PostgreSQL 10 中添加。

用法

pg_ls_logdir () → setof record ( name text, size bigint, modification timestamp with time zone )

pg_ls_logdir() 返回一个记录集,其中包含 log_directory 中文件的名称、大小和最后修改时间戳。

它返回的文件记录是未排序的,因此通常与 ORDER BY 结合使用。

请注意,pg_ls_logdir() 将返回日志目录中的所有文件,而不管它们是否实际是日志文件。但是,与 pg_ls_dir() 不同,它不会返回以点开头的文件名、目录和其他特殊文件。

权限

默认情况下,pg_ls_logdir() 仅限于超级用户和 pg_monitor 默认角色的成员,但可以授予其他用户 EXECUTE 权限来运行此函数。

源代码

pg_ls_logdir() 实现于 src/backend/utils/adt/genfile.c

变更历史

示例

选择 log_directory 中最近的五个文件

postgres=# SELECT * FROM pg_ls_logdir() ORDER BY modification DESC LIMIT 5;
               name               | size  |      modification      
----------------------------------+-------+------------------------
 postgresql-2020-12-24_000000.log |  5946 | 2020-12-24 02:27:10+01
 postgresql-2020-12-23_000000.log | 48825 | 2020-12-23 23:51:25+01
 postgresql-2020-12-22_000000.log | 48512 | 2020-12-22 23:51:18+01
 postgresql-2020-12-21_000000.log | 48748 | 2020-12-21 23:51:27+01
 postgresql-2020-12-20_000000.log | 48405 | 2020-12-20 23:51:02+01
(5 rows)

请注意,由 log_directory 指定的目录可能不存在(例如,如果 log_destination 设置为 syslog,并且该目录从未初始化),在这种情况下会引发 ERROR

postgres=# SELECT pg_ls_logdir();
ERROR:  could not open directory "log": No such file or directory

分类

数据目录, 文件访问和操作, 系统函数

另请参阅

pg_ls_dir(), pg_ls_tmpdir(), pg_ls_waldir(), pg_ls_archive_statusdir(), log_directory

反馈

提交有关“pg_ls_logdir()”的任何评论、建议或更正,请在此处 提交