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 中实现。
更改历史记录
- PostgreSQL 10
- 添加(提交 befd73c5)
示例
选择 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
参考文献
- PostgreSQL 文档: 通用文件访问函数