經過file_fdw讀取PostgreSQL日誌文件(PG9.1新增)

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語句添加過濾條件

相關文章
相關標籤/搜索