pg_rotate_logfile() 是一个用于轮转当前日志文件的系统函数
pg_rotate_logfile() 在 PostgreSQL 8.1 中被添加。
用法
pg_rotate_logfile() → boolean
要使 pg_rotate_logfile() 函数生效,必须将 logging_collector 设置为 on。
执行时,pg_rotate_logfile() 将根据 log_filename 中定义的命名模式创建一个新的日志文件。
请注意,如果 log_filename 的设置导致新文件名与当前文件名相同,则不会发生日志文件轮转。例如,如果 log_filename 被设置为 e.g. postgres.log 或 postgresql-%F.log (%F 解析为当前日期),则不会发生轮转。
变更历史
- PostgreSQL 8.1
- 添加(提交 b609695b)
示例
pg_rotate_logfile() 的基本执行
postgres=# SELECT pg_current_logfile();
pg_current_logfile
-------------------------------------------------
/var/log/pgsql/postgresql-2020-11-24_000000.log
(1 row)
postgres=# SELECT pg_rotate_logfile();
pg_rotate_logfile
-------------------
t
(1 row)
postgres=# SELECT pg_current_logfile();
pg_current_logfile
-------------------------------------------------
/var/log/pgsql/postgresql-2020-11-24_063301.log
(1 row)
执行 pg_rotate_logfile() 但没有效果
postgres=# SHOW log_filename;
log_filename
-------------------
postgresql-%F.log
(1 row)
postgres=# SELECT pg_current_logfile();
pg_current_logfile
------------------------------------------
/var/log/pgsql/postgresql-2020-11-24.log
(1 row)
postgres=# SELECT pg_rotate_logfile();
pg_rotate_logfile
-------------------
t
(1 row)
postgres=# SELECT pg_current_logfile();
pg_current_logfile
------------------------------------------
/var/log/pgsql/postgresql-2020-11-24.log
(1 row)
执行 pg_rotate_logfile() 时 logging_collector 被设置为 off(禁用)
WARNING: rotation not possible because log collection not active pg_rotate_logfile ------------------- f (1 row)
参考资料
- PostgreSQL 文档: 服务器信号函数
