文档

log_fdw

更新时间:

您可以通过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日志文件名称。

使用指南

  1. 创建log_fdw插件。

    create extension log_fdw;
  2. 创建外部数据库服务器。

    使用log_fdw创建一个名为log_server的虚拟外部服务器,映射到PostgreSQL数据库中。示例如下:

    create server log_server foreign data wrapper log_fdw;
  3. 调用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)
  4. 创建外部表。

    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)
  5. 查询外部表(即查询相对应的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)
  6. 卸载插件。

    drop extension log_fdw;