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 参数将日志目录映射到主机上的目录,以便能够轻松访问日志文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/798395.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Zabbix6.0使用自带模板(Redis by Zabbix agent 2)监控Redis数据库

注意&#xff1a;Zabbix6.0使用Redis by Zabbix agent 2 模板可直接监控Redis数据。 1、添加Redis账号密码信息(如果Redis没有设置密码可省略此步骤) vim zabbix_agent2.confPlugins.Redis.Sessions.redis.Uritcp://redis.huayunworld.com:6379 Plugins.Redis.Sessions.redis…

机器学习和人工智能对金融行业的影响——案例分析

作者主页: 知孤云出岫 目录 引言机器学习和人工智能在金融行业的应用1. 风险管理信用评分风险预测 2. 交易高频交易量化交易 3. 客户服务聊天机器人个性化推荐 4. 反欺诈检测 机器学习和人工智能带来的变革1. 提高效率2. 降低成本3. 提升客户体验 未来发展趋势1. 更智能的风控系…

2-34 小波神经网络采用传统 BP 算法

小波神经网络采用传统 BP 算法&#xff0c;存在收敛速度慢和易陷入局部极小值两个突出弱点。建立了基于遗传算法的小波神经网络股票预测模型 GA-WNN。该模型结合了遗传算法的全局优化搜索能力以及小波神经网络良好的时频局部特性。运用 MATLAB 对拟合和预测过程进行仿真。结果表…

Flutter应用开发:掌握StatefulWidget的实用技巧

前言 随着移动应用的日益复杂&#xff0c;状态管理成为了 Flutter 应用开发中的一项重要挑战。 状态&#xff0c;即应用中的可变数据&#xff0c;它驱动着用户界面的渲染和交互。 在 Flutter 这样的声明式 UI 框架中&#xff0c;如何高效、可维护地管理状态&#xff0c;对于…

【2024】VsCode + Latex + Linux(Ubuntu) + wsl环境下配置教程 | 包含 中文配置,和 格式化处理

前言 本篇教程是针对WSL下的Ubuntu操作系统的配置教程&#xff0c;它和一般的Linux环境下的配置有所不同&#xff0c;并且和Windows环境下的也有所不同。 本篇博客编写参考了 官方文档&#xff08;Tex&#xff09; 和 插件官方&#xff08;Texlive Workshop&#xff09; 文档…

一篇文章教你如何快速上手Spring MVC框架【万字详解|包含常用注解分析讲解】

目录 一.什么是Spring Web MVC 二.Spring MVC的使用 ▐ 建立连接 RestController RequestMapping ▐ 传递参数 1.简单类型传参 2.类对象传参&#xff08;RequestParam&#xff09; 3.数组&集合传参 4.JSON传参&#xff08;RequestBody&#xff09; 5.URL中的参数…

7.13实训日志

上午 学习网络安全的过程中&#xff0c;我们深入了解了网络的不同层面和技术&#xff0c;从表层网络到深网再到暗网&#xff0c;以及涉及的产业分类和技术工具。这些知识不仅帮助我们理解网络的复杂性&#xff0c;还揭示了如何应对和防范各种网络威胁。 首先&#xff0c;我们…

查找PPT中某种字体的全部对应文字

本文章的目的是找到某种字体的文字&#xff0c;而不是替换某种字体的文字&#xff0c;也不是将某种字体全部替换为另外一种文字。 第一步&#xff1a;在PPT中按下ALTF11 出现以下窗口 第二步&#xff1a;点击插入->模块 第三步&#xff1a;将以下代码输入到窗体中 Sub F…

Java HashMap红黑树学习

Java HashMap红黑树学习 一、红黑树介绍二、红黑树的基本操作2.1 旋转2.1.1 左旋2.1.2 右旋 2.2 添加2.3 删除 一、红黑树介绍 &#xff08;1&#xff09;红黑树(Red-Black Tree&#xff0c;简称R-B Tree)&#xff0c;是一种特殊的平衡二叉查找树。 &#xff08;2&#xff09;节…

关于正点原子imx6ull串口实验,打开串口软件后无反应

我在某多多买了俩读卡器才1.3&#xff0c;不得不说真便宜。买的是2.0给我发的是3.0.具体是真假我也不太清楚。 反正连上之后发现烧写程序后一直串口没反应&#xff0c;但是串口显示的是绿标&#xff0c;也就代表硬件没问题。 然后我跟着按了几下依旧没啥反应&#xff0c;突然…

自学鸿蒙HarmonyOS的ArkTS语言<九>自定义弹窗组件CustomDialog及二次封装自定义弹窗

一、自定义弹窗 CustomDialog struct CustomDialogBuilder {controller: CustomDialogController new CustomDialogController({ // 注意写法builder: CustomDialogBuilder({})})// controller: CustomDialogController // 这种预览会报错cancel?: () > voidconfirm?: (…

用API实现商品sku抓取字段展示-淘宝sku区间价展示逻辑和规则分析

有卖家问我&#xff1a;我的链接里面有5个sku&#xff0c;都是不同的价格&#xff0c;为什么消费者看到的不是最低价呢&#xff1f; 这是因为淘宝平台商品价格的展示规则发生了变化&#xff0c;存在SKU区间价的产品&#xff0c;现在在搜索结果页面的曝光已经不是默认显示最低s…

51单片机学习——矩阵键盘控制led

前言介绍 按键控制LED亮灭 #include <REGX52.H> void main() {while(1){if(P3_40){P1_10;}else{P1_11;}}}按键控制led状态 #include <REGX52.H> void Delay(unsigned int xms) //11.0592MHz {unsigned char i, j;while(xms){i 2;j 199;do{while (--j);} while …

鸿蒙语言基础类库:【@system.battery (电量信息)】

电量信息 说明&#xff1a; 从API Version 6开始&#xff0c;该接口不再维护&#xff0c;推荐使用新接口[ohos.batteryInfo]。本模块首批接口从API version 3开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import battery from syste…

算法学习day12(动态规划)

一、不同的二叉搜索树 二叉搜索树的性质&#xff1a;父节点比左边的孩子节点都大&#xff1b;比右边的孩子节点都小&#xff1b; 由图片可知&#xff0c;dp[3]是可以由dp[2]和dp[1]得出来的。(二叉搜索树的种类和根节点的val有关) 当val为1时&#xff0c;左边是一定没有节点的…

获奖案例回顾|基于卫星遥感和无人机的水稻全流程风险减量项目

引言 在现代农业保险领域&#xff0c;技术创新是推动行业进步的关键。珈和科技与太平财险的合作&#xff0c;旨在利用先进的卫星遥感和无人机技术&#xff0c;解决传统农业保险面临的诸多挑战&#xff0c;从而提升保险效率和服务质量。本次分享的项目案例获得了《金融电子化》…

leetcode日记(37)旋转图像

方法是看评论区想出来的&#xff1a;先将矩阵转置&#xff0c;再将每一行逆转 class Solution { public: int n,m,l,k; struct bian{int u;int v;int d; }; void digui(int loc,int c[],vector<bian> bi,int now,int q,bool colour[],int& maxx,bool jg[]){if(q>…

利用宝塔安装一套linux开发环境

更新yum&#xff0c;并且更换阿里镜像源 删除yum文件 cd /etc/yum.repos.d/ 进入yum核心目录 ls sun.repo rm -rf * 删除之前配置的本地源 ls 配置阿里镜像源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 配置扩展包 wge…

8款值得收藏的App推荐!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 值得一试的大众APP&#xff0c;它可能会给你的生活带来小小的改变。把下面的内容看完&#xff0c;我确信你一定会收获不少。 一、Todo清单——重…

Java之Stream流的笔记--手写版

Stream流通过讲集合或数组转换成链状流式的结构&#xff0c;简化了集合和数组进行排序、筛选、遍历、去重、统计等操作。主要包括创建流、中间操作、终结操作。若流中无终结操作&#xff0c;则中间操作不会执行&#xff1b;流是一次性的&#xff0c;使用完就会失效&#xff0c;…