您可以通过log_fdw插件来查询CSV格式的数据库日志。
前提条件
PolarDB PostgreSQL版(兼容Oracle)默认不产生CSV格式的数据库日志,需要将GUC参数log_destination的值修改为csvlog。
背景信息
log_fdw插件提供如下两个函数,帮助您查询数据库日志。
list_postgres_log_files()
:列出pg_log目录下所有的CSV格式的日志文件。说明log_fdw也提供了一个名为list_postgres_log_files的视图,用于查询日志目录下所有CSV格式的日志文件。
create_foreign_table_for_log_file('table_name', 'log_server', 'log_file')
:对指定的CSV日志文件创建外部表,查询这个外部表即可查询日志内容。说明其中:
table_name:外部表名称。
log_server:已创建的外部服务器名称。
log_file:CSV日志文件名称。
使用指南
创建log_fdw插件。
create extension log_fdw;
创建外部数据库服务器。
使用log_fdw创建一个名为log_server的虚拟外部服务器,映射到PostgreSQL数据库中。示例如下:
create server log_server foreign data wrapper log_fdw;
调用
list_postgres_log_files()
函数,列出所有的csvlog文件。select * from list_postgres_log_files();
显示结果如下:
file_name | file_size_bytes ----------------------------------+----------------- postgresql-2022-08-24_080308.csv | 1235 (1 row)
创建外部表。
select create_foreign_table_for_log_file('ft1', 'log_server', 'postgresql-2022-08-24_080308.csv');
显示结果如下:
create_foreign_table_for_log_file ----------------------------------- t (1 row)
查询外部表(即查询相对应的CSV日志文件)。
select log_time, message from ft1 order by log_time desc limit 2;
显示结果如下:
log_time | message ----------------------------+------------------------------------------- 2022-08-24 08:04:36.699+00 | vfs open dir pg_log, num open dir 1 2022-08-24 08:03:53.687+00 | create reference for flog_index_insert_bg (2 rows)
卸载插件。
drop extension log_fdw;
文档内容是否对您有帮助?