PostgreSQL日志文件配置,記錄所有操作記錄

在這里插入圖片描述

為了更詳細的記錄PostgreSQL 的運行日志,我們一般需要修改PostgreSQL 默認的配置文件,這里整理了一些常用的配置

修改配置文件

打開 PostgreSQL 配置文件 postgresql.conf。該文件通常位于 PostgreSQL 安裝目錄下的 data 文件夾中。

找到并修改以下配置項:

logging_collector = on
log_statement = 'all'
log_duration = on
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 1

配置文件解釋

啟用日志收集器
logging_collector = on
記錄所有的 SQL 語句,包括查詢和修改
log_statement = 'all'

log_statement有以下幾個參數:

  1. none:不記錄任何 SQL 語句的日志。這是默認值。
  2. ddl:僅記錄數據定義語言 (DDL) 語句的日志,例如 CREATEALTERDROP 等語句。
  3. mod:記錄數據修改語言 (DML) 語句的日志,例如 INSERTUPDATEDELETE 等語句。
  4. all:記錄所有 SQL 語句的日志,包括 DDL、DML 和查詢語句。

通過設置不同的參數,您可以控制要記錄的 SQL 語句類型的詳細程度。例如,如果只對數據修改語句感興趣,可以將 log_statement 設置為 mod。如果希望記錄所有 SQL 語句,包括查詢語句,可以將 log_statement 設置為 all

記錄每個 SQL 語句的執行時間
log_duration = on
記錄日志格式設置
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '

它可以包含以下參數,每個參數都表示不同的含義:

  • %a:當前會話的應用名稱。
  • %u:當前會話的用戶名。
  • %d:當前數據庫的名稱。
  • %r:當前會話的遠程主機地址。
  • %p:當前會話的進程 ID。
  • %t:當前時間戳。
  • %m:當前會話的日志消息類型。
  • %s:當前會話的會話 ID。
  • %i:當前會話的事務 ID。
  • %e:當前會話的錯誤代碼。
  • %c:當前會話的命令標識符。

您可以根據需要自定義 log_line_prefix 的配置,以滿足您對日志行格式的要求。要更改 log_line_prefix 的值,可以編輯 PostgreSQL 配置文件 postgresql.conf,找到 log_line_prefix 配置項并將其設置為所需的值。然后重新啟動 PostgreSQL 服務以使更改生效。

記錄每個連接的建立和關閉
log_connections = on
記錄每個連接的斷開
log_disconnections = on
記錄等待鎖的查詢
log_lock_waits = on
記錄臨時文件的創建和刪除
log_temp_files = 1

PostgreSQL log_temp_files 是一個配置項,用于控制是否記錄臨時文件的創建和刪除操作的日志。它有以下幾個參數:

  1. 0:不記錄臨時文件的日志。這是默認值。
  2. 1:記錄臨時文件的創建和刪除操作的日志。
  3. -1:將臨時文件的日志記錄級別設置為與 log_statement 相同的級別。

log_temp_files 參數的進一步解釋:

  • log_temp_files 設置為 0 時,不會記錄任何臨時文件的日志。
  • log_temp_files 設置為 1 時,會記錄臨時文件的創建和刪除操作的日志。
  • log_temp_files 設置為 -1 時,它會繼承 log_statement 的值,即根據 log_statement 的設置來決定是否記錄臨時文件的日志。如果 log_statement 設置為 none,則不會記錄臨時文件的日志;如果 log_statement 設置為 allddl,則會記錄臨時文件的日志。

修改配置文件

由于本次測試是使用Docker啟動的PostgreSQL,所以要將修改后的配置文件同步到容器內部

拷貝配置到容器
docker cp /opt/postgresql.conf postgresql:/var/lib/postgresql/data

以下是對 docker cp 命令中各個參數的含義的解釋:

  • /opt/postgresql.conf:這是主機系統上的源文件路徑,表示要復制的文件的位置和名稱。在這個例子中,它是 PostgreSQL 的配置文件路徑。
  • postgresql:這是容器的名稱或 ID,表示要將文件復制到哪個容器內部。
  • /var/lib/postgresql/data:這是容器內部的目標路徑,表示要將文件復制到容器內部的哪個位置。在這個例子中,它是 PostgreSQL 容器內部的數據目錄路徑。

通過執行 docker cp 命令,可以將主機系統上的 PostgreSQL 配置文件拷貝到運行中的 PostgreSQL 容器內部,以便在容器中使用該配置文件進行配置和設置。

重啟使其生效
docker restart postgresql

在這個命令中,postgresql 是容器的名稱或 ID。

模擬測試數據

創建表
DROP TABLE IF EXISTS "public"."student";
CREATE TABLE "public"."student" ("student_id" int4 NOT NULL,"name" varchar(255) COLLATE "pg_catalog"."default","age" int4,"gender" varchar(255) COLLATE "pg_catalog"."default","address" varchar(255) COLLATE "pg_catalog"."default","phone" varchar(255) COLLATE "pg_catalog"."default","grade" varchar(255) COLLATE "pg_catalog"."default"
);
COMMENT ON COLUMN "public"."student"."student_id" IS '學生id';
COMMENT ON COLUMN "public"."student"."name" IS '姓名';
COMMENT ON COLUMN "public"."student"."age" IS '年齡';
COMMENT ON COLUMN "public"."student"."gender" IS '性別';
COMMENT ON COLUMN "public"."student"."address" IS '地址';
COMMENT ON COLUMN "public"."student"."phone" IS '電話';
COMMENT ON COLUMN "public"."student"."grade" IS '年級';ALTER TABLE "public"."student" ADD CONSTRAINT "student_pkey" PRIMARY KEY ("student_id");
寫入數據
INSERT INTO "public"."student" VALUES (1, 'John Doe', 21, 'Male', 'Beijing', '1234567890', 'Grade 10');
INSERT INTO "public"."student" VALUES (2, 'Jane Smith', 19, 'Female', 'Shanghai', '0987654321', 'Grade 11');
INSERT INTO "public"."student" VALUES (3, 'Mike Johnson', 18, 'Male', 'Guangzhou', '9876543210', 'Grade 12');

查看日志

使用Docker啟動的PostgreSQL數據庫,查看日志需要先進入到容器內部,找到對應的日志文件,才能查看。

列出正在運行的 Docker容器
docker ps

找到正在運行的 PostgreSQL 容器的 CONTAINER ID 或名稱。

進入正在運行的 PostgreSQL 容器的 shell
docker exec -it <CONTAINER_ID_OR_NAME> /bin/sh

<CONTAINER_ID_OR_NAME> 替換為實際的 CONTAINER ID 或名稱。

進入 PostgreSQL 數據目錄
cd /var/lib/postgresql/data

這是默認的 PostgreSQL 數據目錄。

使用以下命令查看日志文件
tail -f pg_log/postgresql-<DATE>_<TIME>.log

<DATE><TIME> 替換為實際的日志文件日期和時間。

例如,要查看名為 postgresql-2022-01-01_120000.log 的日志文件,可以運行以下命令:

tail -f pg_log/postgresql-2022-01-01_120000.log

這將以實時方式顯示日志文件的內容。

如果在 Docker 啟動 PostgreSQL 容器時未將日志目錄映射到主機上的目錄,您將無法直接在主機上查看日志文件。在啟動容器時,可以使用 -v 參數將日志目錄映射到主機上的目錄,以便能夠輕松訪問日志文件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45203.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45203.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45203.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python循環遍歷:深入理解與實戰應用

在Python編程中&#xff0c;循環遍歷是一種基本且強大的控制流結構&#xff0c;它允許我們重復執行一段代碼直到滿足某個條件為止。無論是處理數據集合&#xff08;如列表、元組、字典、集合等&#xff09;&#xff0c;還是執行重復的任務&#xff0c;循環遍歷都是不可或缺的工…

807.保持城市天際線

解題思路 首先找到四個主要方向&#xff08;東南西北&#xff09;的天際線情況。南北看是一樣的&#xff0c;東西看也是一樣的。所以統計出每行的最值&#xff0c;每列的最值&#xff0c;用一個n的數組存儲。分別存儲行和列的最值。最值的位置進行標記&#xff0c;然后對于其余…

【Qt 基礎】繪圖

畫筆 QPen pen; pen.setWidth(3); // 線條寬度 pen.setColor(Qt::red);// 畫筆顏色 pen.setStyle(Qt::DashLine);// 線條樣式 pen.setCapStyle(Qt::RoundCap);// 線端樣式 pen.setJoinStyle(Qt::BevelJoin);// 連接樣式 painter.setPen(pen);線條 線端 連接 畫刷 QBrush bru…

Spring容器詳細介紹

Spring容器 1 Spring核心容器介紹 問題導入 問題&#xff1a;按照Bean名稱獲取Bean有什么弊端&#xff0c;按照Bean類型獲取Bean有什么弊端&#xff1f; 1.1 創建容器 方式一&#xff1a;類路徑加載配置文件 ApplicationContext ctx new ClassPathXmlApplicationContext…

復合類型的字節對齊

引子 #inlcude<stdio.h> struct s{int i;char a: }; struct s sVar {5,A}; int main(void){printf("%d\n",sizeof(sVar)); }問1&#xff1a;上面這個代碼的輸出結果是多少&#xff1f; 答1&#xff1a; 思考 明明sVar這個結構體就兩個元素&#xff0c;5和…

什么是冪等?如何實現冪等?

一 定義 冪等性&#xff08;Idempotence&#xff09;是數學與計算機科學中的一個概念&#xff0c;它指的是一個操作、函數或方法被重復執行多次與僅執行一次的效果相同&#xff0c;或者說&#xff0c;其后續調用的結果不會改變之前調用的結果。 在計算機科學中&#xff0c;這個…

Spring Boot實戰:無縫對接OpenAI

Spring Boot實戰&#xff1a;無縫對接OpenAI 在當今的技術領域&#xff0c;人工智能&#xff08;AI&#xff09;已經成為一股不可忽視的力量。OpenAI作為其中的佼佼者&#xff0c;提供了強大的API供開發者使用&#xff0c;以實現各種AI功能。本文將詳細介紹如何使用Spring Boo…

開閉原則 (Open/Closed Principle, OCP)

開閉原則 (Open/Closed Principle, OCP) 開閉原則&#xff08;Open/Closed Principle, OCP&#xff09;是面向對象設計的五大原則之一。它的基本思想是&#xff1a;軟件實體&#xff08;類、模塊、函數等&#xff09;應該對擴展開放&#xff0c;對修改關閉。即在不修改現有代碼…

uniapp實現水印相機

uniapp實現水印相機-livePusher 水印相機 背景 前兩天拿到了一個需求&#xff0c;要求在內部的oaApp中增加一個衛生檢查模塊&#xff0c;這個模塊中的核心訴求就是要求拍照的照片添加水印。對于這個需求&#xff0c;我首先想到的是直接去插件市場&#xff0c;下一個水印相機…

多頭注意力機制詳解:多維度的深度學習利器

引言 多頭注意力機制是對基礎注意力機制的一種擴展&#xff0c;通過引入多個注意力頭&#xff0c;每個頭獨立計算注意力&#xff0c;然后將結果拼接在一起進行線性變換。本文將詳細介紹多頭注意力機制的原理、應用以及具體實現。 原理 多頭注意力機制的核心思想是通過多個注…

springAMQP自定義fanout交換機進行消息的廣播

rabbitmq一共有三種交換機&#xff1a; fanout--廣播direct--定向topic--話題 rabbitmq-web端 首先我們需要建立一個名叫cybg.fanout交換機與兩個自定義的隊列用于測試廣播效果 我這里就起名字叫做fanout_queue1&fanout_queue2 項目中&#xff1a; 首先對我們的Liste…

當代政治制度(練習題)

當代政治制度&#xff08;練習題&#xff09; *** Rz整理 僅供參考 *** 目前地方人大設立的專門委員會不包括&#xff08;B.法律審查委員會F.外交事務專門委員會 &#xff09;答案不確定 等待指點 A.法制委員會 B.法律審查委員會 C.財政經濟委員會 D.社會建設委員會 E.農業與…

Go語言基礎數據類型、變量及自增語法

本文內容為Go語言的基礎數據類型、變量定義和賦值及自增語法介紹。 目錄 基礎數據類型 變量 先定義后賦值 定義時直接賦值 自動推導定義賦值 平行賦值 自增語法 總結 基礎數據類型 int,int8 intl6, int32, int64 uint8... uint64 float32,float64 true/false 變量 …

unity 環形循環切換UI

環形ui管理器 using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using DG.Tweening; using System.Collections; using Unity.VisualScripting;public class LevelSelector : MonoBehaviour {public GameObject levelButtonPrefab; // 關卡按鈕的…

Elasticsearch:介紹 retrievers - 搜索一切事物

作者&#xff1a;來自 Elastic Jeff Vestal, Jack Conradson 在 8.14 中&#xff0c;Elastic 在 Elasticsearch 中引入了一項名為 “retrievers - 檢索器” 的新搜索功能。繼續閱讀以了解它們的簡單性和效率&#xff0c;以及它們如何增強你的搜索操作。 檢索器是 Elasticsearc…

Linux:解決vim打開文件默認為replace模式

現象 Ubuntu打開 vim 默認為 replace 模式 原因 終端的編碼設置與目標機器的編碼設置不同。 解決方案 修改 vim 配置文件( /etc/vim/vimrc或者~/.vimrc)&#xff0c;添加&#xff1a; set termencodingutf-8 set fileformatsunix set encodingprcP.S. vimrc 中注釋使用英…

知識圖譜與LLMs:實時圖分析(通過其關系的上下文理解數據點)

大型語言模型 (LLM) 極大地改變了普通人獲取數據的方式。不到一年前&#xff0c;訪問公司數據需要具備技術技能&#xff0c;包括熟練掌握各種儀表板工具&#xff0c;甚至深入研究數據庫查詢語言的復雜性。然而&#xff0c;隨著 ChatGPT 等 LLM 的興起&#xff0c;隨著所謂的檢索…

Ubuntu系統安裝mysql之后進行遠程連接

1.首先要配置數據庫允許進行遠程連接 1.1 打開MySQL配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf1.2 修改 bind-address 行 #按i進入插入模式 bind-address 0.0.0.0 #按 Esc 鍵退出插入模式。 #輸入:wq 然后按 Enter 保存并退…

React學習筆記02-----

一、React簡介 想實現頁面的局部刷新&#xff0c;而不是整個網頁的刷新。AJAXDOM可以實現局部刷新 1.特點 &#xff08;1&#xff09;虛擬DOM 開發者通過React來操作原生DOM&#xff0c;從而構建頁面。 React通過虛擬DOM來實現&#xff0c;可以解決DOM的兼容性問題&#x…

Window10下安裝WSL-Ubuntu20.04

1.開啟并更新WSL 1.1開啟WSL 首先先來看一下電腦是否能夠開啟WSL:待補充... 然后再來看一下如何開啟WSL:win->設置->應用->應用和功能->程序和功能&#xff0c;如下所示&#xff1a; 最后選擇啟用或關閉Windows功能&#xff0c;開啟兩個選項&#xff1a;1.Hyper-V…