PostgreSQL 服务器日志 pg_log

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 10.0版本PostgreSQL,存在三种日志WAL日志,即重做日志,一般不可读日志对应目录为 $PGDATA/pg_xlog事务提交日志,记录的是事务的元数据日志对应目录为 $PGDATA/pg_clog数据库运行日志日志对应目录为$PGDATA/pg_log前两种日志,虽然仍然非常重要,但却是不可读的,我们日常使用不多。

10.0版本PostgreSQL,存在三种日志

WAL日志,即重做日志,一般不可读

  • 日志对应目录为 $PGDATA/pg_xlog

事务提交日志,记录的是事务的元数据

  • 日志对应目录为 $PGDATA/pg_clog

数据库运行日志

  • 日志对应目录为$PGDATA/pg_log

前两种日志,虽然仍然非常重要,但却是不可读的,我们日常使用不多。
本次重点说明第三种日志。


数据库运行日志的相关配置

1.logging_collector = on/off
是否将日志重定向至文件中,默认是off(该配置修改后,需要重启DB服务)

2.log_directory = 'pg_log' ---- 日志文件目录,默认是PGDATA的相对路径,即{PGDATA}/pg_log,也可以改为绝对路径

3.log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' ---- 日志文件命名形式,其中格式化格式与linux date格式化相同。

4.log_rotation_age = 1d ---- 单个日志文件的生存期,默认1天,在日志文件大小没有达到log_rotation_size时,一天只生成一个日志文件

5.log_rotation_size = 10MB ---- 单个日志文件的大小,如果时间没有超过log_rotation_age,一个日志文件最大只能到10M,否则将新生成一个日志文件。

6.log_truncate_on_rotation = off ---- 当日志文件已存在时,该配置如果为off,新生成的日志将在文件尾部追加,如果为on,则会覆盖原来的日志。

7.log_lock_waits = off ---- 控制当一个会话等待时间超过deadlock_timeout而被锁时是否产生一个日志信息。在判断一个锁等待是否会影响性能时是有用的,缺省是off。

8.log_duration = off ---- 记录每条SQL语句执行完成消耗的时间,将此配置设置为on,用于统计哪些SQL语句耗时较长。

9.log_statement
设置日志记录内容--log_statement:none, ddl, mod, and all 。

None表示不记录(默认项)

ddl记录所有数据定义命令,比如CREATE,ALTER,和DROP语句。

mod记录所有ddl语句,加上数据修改语句INSERT,UPDATE等。

all记录所有执行的语句,将此配置设置为all可跟踪整个数据库执行的SQL语句,但会对数据库性能产生较大影响,生产环境不建议配置此值。

postgres=# alter system set log_statement=ddl;
ALTER SYSTEM
# show log_statement仍然显示原来的设置,需要退出,执行pg_ctl reload才能生效
postgres=# show log_statement;
 log_statement 
---------------
 mod
(1 row)

postgres=# \q
[postgres@localhost data]$ pg_ctl reload
server signaled
[postgres@localhost data]$ psql
psql (10.7)
Type "help" for help.

postgres=# show log_statement;
 log_statement 
---------------
 ddl
(1 row)

postgres=#

注:此处未记录select查询语句(log_min_duration_statement=-1 此处为默认值)。当同时设置log_statement=’mod’和log_min_duration_statement=0后,也会记录select。

highgo=#alter system set log_statement=mod;

ALTERSYSTEM

highgo=#alter system set log_min_duration_statement=0;

ALTERSYSTEM

highgo=#\q

[highgo@sourcedbdata]$ pg_ctl reload

serversignaled

10.log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements and their durations, > 0 logs only statements running at least this number of milliseconds
-1表示不可用,0将记录所有SQL语句和它们的耗时,>0只记录那些耗时超过(或等于)这个值(ms)的SQL语句。个人更喜欢使用该配置来跟踪那些耗时较长,可能存在性能问题的SQL语句。虽然使用log_statement和log_duration也能够统计SQL语句及耗时,但是SQL语句和耗时统计结果可能相差很多行,或在不同的文件中,但是log_min_duration_statement会将SQL语句和耗时在同一行记录,更方便阅读

11.log_connections = off ----是否记录连接信息(修改后需要重启数据库)

12.log_disconnections = off ---- 是否记录连接断开日志

13.log_line_prefix = '%m %p %u %d %r ' ---- 日志输出格式(%m,%p实际意义配置文件中有解释),可根据自己需要设置(能够记录时间,用户名称,数据库名称,客户端IP和端口,方便定位问题)

#log_line_prefix = '%m [%p] ' 
# special value
# %a = application name
#   %u = user name
#   %d = database name
#   %r = remote host and port
#   %h = remote host
#   %p = process ID
#   %t = timestamp without milliseconds
#   %m = timestamp with millisecond#   
#   %n = timestamp with milliseconds (as a Unix epoch)
#   %i = command tag
#   %e = SQL state

14.log_timezone = 'Asia/Shanghai' ---- 日志时区,最好和服务器设置同一个时区,方便问题定位

--视图pg_timezone_names保存了所有可供选择的时区

select * from pg_timezone_names;

服务器时区设置
[root@localhost ~]# cp -rf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
66 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
29天前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
176 3
|
29天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1607 14
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
41 1
|
24天前
|
Python
log日志学习
【10月更文挑战第9天】 python处理log打印模块log的使用和介绍
25 0
|
26天前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
145 0
|
29天前
|
存储 分布式计算 NoSQL
大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge
大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge
35 0
|
30天前
|
缓存 Linux 编译器
【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案
通过上述步骤,您应该能够在CentOS环境中成功安装并使用log4cplus日志组件。面对任何安装或使用过程中出现的问题,仔细检查错误信息,对照提供的解决方案进行调整,通常都能找到合适的解决之道。log4cplus的强大功能将为您的项目提供灵活、高效的日志管理方案,助力软件开发与维护。
49 0
|
3月前
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
124 3
|
2月前
|
Java
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。