PG9.4官方英文文檔:html
關於file_fdw:http://www.postgresql.org/docs/9.4/static/file-fdw.htmlsql
關於日誌配置:http://www.postgresql.org/docs/9.4/static/runtime-config-logging.htmlshell
一、 配置postgresql.conf文件中關於日誌的參數數據庫
log_destination = 'csvlog' #生成日csv格式的日誌文件 logging_collector = on log_directory = 'pg_log' #日誌文件存儲在./data/pg_log目錄 log_filename = 'postgresql-%Y-%m-%d' #定義日誌文件名字爲postgresql-2013-12-17.csv log_truncate_on_rotation = off log_rotation_age = 1d #設置日誌文件生成的頻率爲1天 log_rotation_size = 0 log_error_verbosity = verbose #設置日誌文件中的錯誤信息爲詳細 log_statement = all #設置全部語句均計入日誌
2、配置file_fdw並建立外部表
session
檢查pg安裝目錄的lib/postgresql目錄下是否存在file_fdw.so文件,確保安裝時已經編譯安裝了file_fdw組件。app
如下須要以數據庫postgres用戶鏈接到postgres數據庫進行操做: post
建立擴展:spa
postgres=# create extension file_fdw;
建立外部服務:
日誌
postgres=# create server pglog FOREIGN DATA WRAPPER file_fdw;
建立外部表:postgresql
postgres=# CREATE FOREIGN TABLE pglog ( log_time timestamp(3) with time zone, user_name text, database_name text, process_id integer, connection_from text, session_id text, session_line_num bigint, command_tag text, session_start_time timestamp with time zone, virtual_transaction_id text, transaction_id bigint, error_severity text, sql_state_code text, message text, detail text, hint text, internal_query text, internal_query_pos integer, context text, query text, query_pos integer, location text, application_name text ) SERVER pglog OPTIONS (filename '/user/data/pg_log/postgresql-2013-12-17.csv',format 'csv');
注意:以上filename中的文件路徑要求是絕對路徑。
能夠用如下SQL刪除外部表:
postgres=# drop foreign table pglog;
3、使用外部表讀取日誌信息
postgres=# select log_time,connection_from,user_name,database_name,query,application_name from pglog where query is not null;
實際應用中能夠根據須要爲SQL語句添加過濾條件。