postgresql開啟pg_log日志詳細步驟及參數(shù)說明
一、概述:postgresql的運行日志默認是不開啟的,如果要查詢?nèi)罩拘枰謩娱_啟。
二、修改配置文件,開啟運行日志:
vim postgresql.conf log_destination = ‘csvlog' logging_collector = on log_directory = ‘pg_log' log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log' log_rotation_age = 1d log_rotation_size = 100MB log_min_messages = debug1 # 記錄執(zhí)行慢的SQL log_min_duration_statement = 60 log_checkpoints = on log_connections = on log_disconnections = on log_duration = on log_line_prefix = ‘%m' # 監(jiān)控數(shù)據(jù)庫中長時間的鎖 log_lock_waits = on # 記錄DDL操作 log_statement = ‘a(chǎn)ll'
[root@localhost data]# cd pg_log [root@localhost pg_log]# ls postgresql-2023-07-27_22.csv postgresql-2023-07-27_22.log postgresql-2023-07-28_14.csv postgresql-2023-07-28_14.log
三、將運行日志導(dǎo)入到數(shù)據(jù)庫:
1、創(chuàng)建日志表:
CREATE TABLE postgres_log ( 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, backend_type text, leader_pid integer, query_id bigint, PRIMARY KEY (session_id, session_line_num) )
2、將日志文件copy到數(shù)據(jù)庫
DO $func$BEGIN EXECUTE $$ COPY public.postgres_log from '/opt/postgresql/data/pg_log/postgresql-$$ || to_char(now(),'YYYY-MM-DD_HH24') || $$.csv' DELIMITER ',' CSV HEADER; $$;END;$func$ LANGUAGE plpgsql;
SELECT * from postgres_log
四、其他:一些參數(shù)說明
log_destination默認是stderr,有三個選項stderr,csvlog,syslog;如果使用csvlog的話,logging_collector必須開啟。也可以同時使用csvlog和stderr,會記錄兩種格式的日志。
log_rotation_age當(dāng)logging_collector被啟用時,這個參數(shù)決定一個個體日志文件的最長生命期。當(dāng)這些分鐘過去后,一個新的日志文件將被創(chuàng)建。將這個參數(shù)設(shè)置為零將禁用基于時間的新日志文件創(chuàng)建。1d代表1天。
log_rotation_size:當(dāng)logging_collector被啟用時,這個參數(shù)決定一個個體日志文件的最大尺寸。當(dāng)這么多千字節(jié)被發(fā)送到一個日志文件后,將創(chuàng)建一個新的日志文件。將這個參數(shù)設(shè)置為零將禁用基于尺寸的新日志文件創(chuàng)建。
log_min_messages:控制哪些消息級別 被寫入到服務(wù)器日志。有效值是DEBUG5、DEBUG4、 DEBUG3、DEBUG2、DEBUG1、 INFO、NOTICE、WARNING、 ERROR、LOG、FATAL和 PANIC。每個級別都包括以后的所有級別。級別越靠后,被發(fā)送的消息越少。默認值是WARNING。
log_min_duration_statement:相當(dāng)于mysql的long_query_time,記錄慢SQL,超過這個時間的SQL將會被記錄到日志里。
log_connections:導(dǎo)致每一次嘗試對服務(wù)器的連接被記錄,客戶端認證的成功完成也會被記錄。 只有超級用戶能在會話開始時更改這個參數(shù),在會話中它不能被更改。默認 為off。
log_disconnections:導(dǎo)致會話終止也會被記錄。日志輸出提供的信息類似于 log_connections,不過還外加會話的持續(xù)時間。 只有超級用戶能在會話開始時更改這個參數(shù),在會話中它不能被更改。默認 為off。
log_duration:導(dǎo)致每一個完成的語句的持續(xù)時間被記錄。默認值是off。如果log_duration為on并且log_min_duration_statement為正值,所有持續(xù)時間都將被記錄,但是只有超過閾值的語句才會被記錄查詢文本。這種行為有助于在高負載安裝中收集統(tǒng)計信息
log_line_prefix:設(shè)置日志輸出格式(能夠記錄時間,用戶名稱,數(shù)據(jù)庫名稱,客戶端IP和端口,方便定位問題)默認值是’%m [%p] ',它記錄時間戳和進程ID
log_lock_waits:控制當(dāng)一個會話為獲得一個鎖等到超過deadlock_timeout時,是否要產(chǎn)生一個日志消息。這有助于決定是否鎖等待造成了性能低下。默認值是off
log_statement:控制哪些 SQL 語句被記錄。有效值是 none (off)、ddl、mod和 all(所有語句)。默認值是none
總結(jié)
到此這篇關(guān)于postgresql開啟pg_log日志詳細步驟及參數(shù)說明的文章就介紹到這了,更多相關(guān)postgresql開啟pg_log日志內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PostgreSQL教程(十三):數(shù)據(jù)庫管理詳解
這篇文章主要介紹了PostgreSQL教程(十三):數(shù)據(jù)庫管理詳解,本文講解了概述、創(chuàng)建數(shù)據(jù)庫、修改數(shù)據(jù)庫配置、刪除數(shù)據(jù)庫、表空間,需要的朋友可以參考下2015-05-05解決sqoop從postgresql拉數(shù)據(jù),報錯TCP/IP連接的問題
這篇文章主要介紹了解決sqoop從postgresql拉數(shù)據(jù),報錯TCP/IP連接的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12PostgreSQL 實現(xiàn)sql放入文件批量執(zhí)行
這篇文章主要介紹了PostgreSQL 實現(xiàn)sql放入文件批量執(zhí)行,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02postgresql 數(shù)據(jù)庫 與TimescaleDB 時序庫 join 在一起
這篇文章主要介紹了postgresql 數(shù)據(jù)庫 與TimescaleDB 時序庫 join 在一起,需要的朋友可以參考下2020-12-12