PostgreSQL日志文件配置,记录所有操作记录
创作时间:
作者:
@小白创作中心
PostgreSQL日志文件配置,记录所有操作记录
引用
CSDN
1.
https://blog.csdn.net/aaalk1001/article/details/140413990
为了更详细地记录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
有以下几个参数:
none
:不记录任何SQL语句的日志。这是默认值。ddl
:仅记录数据定义语言(DDL)语句的日志,例如CREATE
、ALTER
和DROP
等语句。mod
:记录数据修改语言(DML)语句的日志,例如INSERT
、UPDATE
和DELETE
等语句。all
:记录所有SQL语句的日志,包括DDL、DML和查询语句。
记录每个SQL语句的执行时间
log_duration = on
记录日志格式设置
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '
log_line_prefix
可以包含以下参数:
%a
:当前会话的应用名称。%u
:当前会话的用户名。%d
:当前数据库的名称。%r
:当前会话的远程主机地址。%p
:当前会话的进程ID。%t
:当前时间戳。%m
:当前会话的日志消息类型。%s
:当前会话的会话ID。%i
:当前会话的事务ID。%e
:当前会话的错误代码。%c
:当前会话的命令标识符。
记录每个连接的建立和关闭
log_connections = on
记录每个连接的断开
log_disconnections = on
记录等待锁的查询
log_lock_waits = on
记录临时文件的创建和删除
log_temp_files = 1
log_temp_files
有以下几个参数:
0
:不记录临时文件的日志。这是默认值。1
:记录临时文件的创建和删除操作的日志。-1
:将临时文件的日志记录级别设置为与log_statement
相同的级别。
在Docker环境下配置
由于本次测试是使用Docker启动的PostgreSQL,所以需要将修改后的配置文件同步到容器内部。
拷贝配置到容器
docker cp /opt/postgresql.conf postgresql:/var/lib/postgresql/data
参数解释:
/opt/postgresql.conf
:主机系统上的源文件路径。postgresql
:容器的名称或ID。/var/lib/postgresql/data
:容器内部的目标路径。
重启服务
docker restart postgresql
模拟测试数据
创建表
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容器的shell
docker exec -it <CONTAINER_ID_OR_NAME> /bin/sh
进入PostgreSQL数据目录
cd /var/lib/postgresql/data
查看日志文件
tail -f pg_log/postgresql-<DATE>_<TIME>.log
例如,要查看名为postgresql-2022-01-01_120000.log
的日志文件,可以运行以下命令:
tail -f pg_log/postgresql-2022-01-01_120000.log
这将以实时方式显示日志文件的内容。
如果在Docker启动PostgreSQL容器时未将日志目录映射到主机上的目录,可以使用-v
参数将日志目录映射到主机上的目录,以便能够轻松访问日志文件。
热门推荐
体育名师圈重点!关于“体育八条”的科学暴汗指南来了
长短活用法解析:提升写作技巧的关键秘诀
中兴路由器密码管理指南:从查找、重置到安全设置
如何让银行活期存款收益更高?
写在秋天的一首小诗,意境尤其动人,的确值得被细细品味
如何编辑自己的团队话术
鹰嘴骨折康复训练方法
《长安十二时辰》:瑰丽盛唐再现舞台
一文读懂大模型:从基础概念到应用实践
考研复习中的休息与放松:保持高效学习的秘诀
如何在人生的起起落落中掌控命运?这几点心态调整让你不再迷茫
评价生产线的能力- 速度 vs. OEE
膳食纤维,你吃够了吗?该吃哪些食物补充?
猫屎臭到爆?!如何彻底告别恶臭!
杨业:北宋名将,雁门关大破辽军的“杨无敌”
他克莫司副作用有哪些?医生专业解答
LLM的RAG分块(Chunking)策略详解
从零开始优化 RAG:7 种 Chunking 方法让你的系统更智能
埃隆·马斯克开源Grok的“难言之隐”与“野望”
如何分析货币基金的风险与收益?这种分析方法如何帮助做出明智的投资选择?
基金投资策略的市场分析方法?学习如何进行基金投资策略的市场分析
球镜和柱镜:眼科视力矫正的两种重要工具
民国军阀史系列——奉系军阀兴衰史
必备的六个思维训练方法与工具,提高决策、问题解决、创新等能力
生育保险缴费期限是多久才能报销?
动产物权的设立和转让何时生效:法律规定与实际操作
如何算回本?
以旧换新补贴新政!全屋定制也能享优惠
如何提升差示扫描量热仪的灵敏度
用宜家家居打造温馨小窝的实用指南