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 文档: 服务器信号函数