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文档: 通用文件访问函数