PostgreSQL日志文件配置,记录所有操作记录

news2024/9/22 11:24:02

在这里插入图片描述

为了更详细的记录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.coloradmin.cn/o/1925273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.10-改进CBOW模型的学习

文章目录 0引言1 cupy包的安装2解决VScode中matplotlib绘图不显示的问题3 CBOW模型学习的实现4 CBOW模型对更复杂模式的捕捉5单词向量的评价方法6总结 0引言 本节将前面实现的改进的CBOW模型在PTB数据集上跑一遍由于希望跟书上一样调用GPU&#xff0c;因此需要安装cupy包&…

前端Canvas入门——一些注意事项

创建渐变的三种方法&#xff1a; createLinearGradient() - 线性渐变 createRadialGradient() - 径向渐变&#xff08;放射性渐变&#xff09; createConicGradient() - 锥形渐变 这三种的核心观点都是&#xff1a; 创建一个gradient对象&#xff0c;然后调用addColorStop()方法…

【软件测试】自动化测试常用函数 -- 详解

一、WebDriver API 一个简单自动化脚本的构成&#xff1a; 脚本解析 # coding utf-8 from selenium import webdriver import time browser webdriver.Firefox() time.sleep(3) browser.get("http://www.baidu.com") time.sleep(3) browser.find_element_by_id(…

Photoshop

彩色转灰度&#xff1a;ctrlshiftu 背景转黑色&#xff1a; 魔术棒容差10 shift连选 shiftF5&#xff08;填充&#xff09;钢笔选择 路径 工作路径 将路径作为选区载入 点回图层 按ctrlx删除选区 待更新

[C++]——同步异步日志系统(5)

同步异步日志系统 一、日志消息格式化设计1.1 格式化子项类的定义和实现1.2 格式化类的定义和实现 二、日志落地类设计2.1 日志落地模块功能实现与测试2.2 日志落地模块功能功能扩展 一、日志消息格式化设计 日志格式化模块的作用&#xff1a;对日志消息进行格式化&#xff0c…

Windows 子系统WSL2 Ubuntu使用事项

Windows 子系统WSL2 Ubuntu使用事项 要使外部设备能够访问运行在 Windows 上的 WSL2 实例&#xff0c;你可以端口转发的方法。由于 WSL2 是在虚拟化环境中运行&#xff0c;直接访问比 WSL1 更为复杂. 1 如何实现子系统可以被外部系统SSH 1.1 端口转发: 通过windows代理WSL2的…

微信视频号的视频怎么下载到本地?快速教你下载视频号视频

天来说说市面上常见的微信视频号视频下载工具&#xff0c;教大家快速下载视频号视频&#xff01; 方法一&#xff1a;缓存方法 该方法来源早期视频技术&#xff0c;因早期无法将大量视频通过网络存储&#xff0c;故而会有缓存视频文件到手机&#xff0c;其目的为了提高用户体验…

stm32入门-----初识stm32

目录 前言 ARM stm32 1.stm32家族 2.stm32的外设资源 3.命名规则 4.系统结构 5.引脚定义 6.启动配置 7.STM32F103C8T6芯片 8.STM32F103C8T6芯片原理图与最小系统电路 前言 已经很久没跟新了&#xff0c;上次发文的时候是好几个月之前了&#xff0c;现在我是想去学习st…

C++继承和多态

目录 继承 继承的意义 访问限定符、继承方式 赋值兼容规则&#xff08;切片&#xff09; 子类的默认成员函数 多继承 继承is a和组合has a 多态 什么是多态 形成多态的条件 函数重载&#xff0c;隐藏&#xff0c;重写的区别 override和final 多态原理 继承 继承的…

FinalShell介绍,安装与应用

目录 一、什么是finalshell 二、finalshell功能 三、为什么要用finalshell 四、安装finalshell 五、finalshell使用 1.添加连接 获取虚拟ip地址 2.启动连接 一、什么是finalshell FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工…

在RHEL9.4上启用SFTP服务

FTP存在的不足&#xff1a; 明文传输 FTP传输的数据&#xff08;包括用户名、密码和文件内容&#xff09;都是明文的&#xff0c;这意味着数据可以被网络上的任何人截获并读取。没有内置的加密机制&#xff0c;容易受到中间人攻击。 被动模式下的端口问题 FTP的被动模式需要…

server nat表和会话表的作用及NAT地址转换详细

本章节主要讲nat技术的基础 -会话表的建立也是看5元组 -状态检测技术的回包一样也看5元组&#xff0c;但是状态检测技术会看的除开5元组还有更多东西 老哥&#xff0c;你真的应该好好注意一个东西&#xff1a;我们的会话表只是为了后续包的转发&#xff0c;会话表是记录的首…

C++:哈希表

哈希表概念 哈希表可以简单理解为&#xff1a;把数据转化为数组的下标&#xff0c;然后用数组的下标对应的值来表示这个数据。如果我们想要搜索这个数据&#xff0c;直接计算出这个数据的下标&#xff0c;然后就可以直接访问数组对应的位置&#xff0c;所以可以用O(1)的复杂度…

澳门建筑插画:成都亚恒丰创教育科技有限公司

澳门建筑插画&#xff1a;绘就东方之珠的斑斓画卷 在浩瀚的中华大地上&#xff0c;澳门以其独特的地理位置和丰富的历史文化&#xff0c;如同一颗璀璨的明珠镶嵌在南国海疆。这座城市&#xff0c;不仅是东西方文化交融的典范&#xff0c;更是建筑艺术的宝库。当画笔轻触纸面&a…

能源园区可视化管理系统

利用图扑 HT 可视化打造能源园区管理系统&#xff0c;实时监控和优化能源分配&#xff0c;提升园区运行效率&#xff0c;增强安全管理&#xff0c;推动绿色和可持续发展。

信立方大模型 | 以AI之钥,开拓智能守护新疆界

在当前网络安全形势日益复杂的背景下&#xff0c;技术的进步不仅带来了便利&#xff0c;也使得网络攻击手段更加多样化和隐蔽化。据悉&#xff0c;国外某研究团队已成功利用GPT技术开发出一种黑客智能体框架&#xff0c;该框架能够深入研读CVE&#xff08;通用漏洞披露&#xf…

MATLAB激光通信和-积消息传递算法(Python图形模型算法)模拟调制

&#x1f3af;要点 &#x1f3af;概率论和图论数学形式和图结构 | &#x1f3af;数学形式、图结构和代码验证贝叶斯分类器算法&#xff1a;&#x1f58a;多类型&#xff1a;朴素贝叶斯&#xff0c;求和朴素贝叶斯、高斯朴素贝叶斯、树增强贝叶斯、贝叶斯网络增强贝叶斯和半朴素…

Android12 MultiMedia框架之GenericSource extractor

前面两节学习到了各种Source的创建和extractor service的启动&#xff0c;本节将以本地播放为例记录下GenericSource是如何创建一个extractor的。extractor是在PrepareAsync()方法中被创建出来的&#xff0c;为了不过多赘述&#xff0c;我们直接从GenericSource的onPrepareAsyn…

LeetCode刷题笔记第3011题:判断一个数组是否可以变为有序

LeetCode刷题笔记第3011题&#xff1a;判断一个数组是否可以变为有序 题目&#xff1a; 想法&#xff1a; 使用冒泡排序进行排序&#xff0c;在判断大小条件时加入判断二进制下数位为1的数目是否相同&#xff0c;相同则可以进行互换。最后遍历数组&#xff0c;相邻两两之间是…

17集 如何用ESP-IDF编译ESP-DL深度学习工程-《MCU嵌入式AI开发笔记》

17集 如何用ESP-IDF编译ESP-DL深度学习工程-《MCU嵌入式AI开发笔记》 参考文档&#xff1a;ESP-DL 用户指南&#xff1a; https://docs.espressif.com/projects/esp-dl/zh_CN/latest/esp32/index.html 和https://docs.espressif.com/projects/esp-dl/zh_CN/latest/esp32/get-s…