# 20.8.错误报告和日志记录

20.8.1. 在哪里登录

20.8.2. 何时登录

20.8.3. 记录什么

20.8.4. 使用CSV格式的日志输出

20.8.5. 流程标题

# 20.8.1.在哪里登录

登录目的地(一串)

PostgreSQL支持多种记录服务器消息的方法,包括stderr、csvlog和syslog。在Windows上,还支持事件日志。将此参数设置为用逗号分隔的所需日志目的地列表。默认情况下,仅登录到stderr。此参数只能在postgresql。形态文件或在服务器命令行上。

如果csvlog包含在登录目的地,日志条目以“逗号分隔值”(CSV)格式输出,这便于将日志加载到程序中。看见第20.8.4节详细信息。登录中_收藏家必须启用才能生成CSV格式的日志输出。

当包含stderr或csvlog时,文件当前日志文件用于记录日志采集器当前使用的日志文件的位置以及关联的日志目标。这为查找实例当前使用的日志提供了一种方便的方法。以下是该文件内容的示例:

stderr log/postgresql.log
csvlog log/postgresql.csv

当前日志文件在作为旋转效果创建新日志文件时,以及登录目的地重新加载。当stderr和csvlog都不包含在登录目的地,以及当日志收集器被禁用时。

# 笔记

在大多数Unix系统上,您需要更改系统的syslog守护进程的配置,以便将syslog选项用于登录目的地.PostgreSQL可以登录到syslog工具LOCAL0通过本地7(见系统日志_设施),但大多数平台上的默认系统日志配置将丢弃所有此类消息。您需要添加以下内容:

local0.*    /var/log/postgresql

添加到syslog守护进程的配置文件以使其工作。

在Windows上,当您使用事件记录选择登录目的地,您应该向操作系统注册事件源及其库,以便Windows事件查看器可以干净地显示事件日志消息。看见第19.12节详细信息。

日志采集器 (布尔值)

此参数启用日志收集器,这是一个后台进程,用于捕获发送到stderr的日志消息,并将其重定向到日志文件中。这种方法通常比登录syslog更有用,因为某些类型的消息可能不会出现在syslog输出中。(一个常见的例子是动态链接器故障消息;另一个例子是由脚本(如档案室命令)此参数只能在服务器启动时设置。

# 笔记

可以在不使用日志采集器的情况下登录到stderr;日志消息将直接发送到服务器的stderr指向的任何地方。但是,该方法仅适用于低日志量,因为它没有提供旋转日志文件的方便方式。此外,在某些平台上,不使用日志收集器可能会导致日志输出丢失或混乱,因为多个进程同时写入同一个日志文件可能会覆盖彼此的输出。

# 笔记

日志采集器设计为永不丢失消息。这意味着,在负载极高的情况下,当收集器落后时,服务器进程可能会在尝试发送额外日志消息时被阻止。相反,如果syslog无法写入消息,它更愿意删除消息,这意味着在这种情况下,它可能无法记录一些消息,但不会阻止系统的其余部分。

日志目录 (一串)

什么时候日志采集器启用时,此参数确定将在其中创建日志文件的目录。它可以指定为绝对路径,或相对于群集数据目录。此参数只能在postgresql。形态文件或在服务器命令行上。默认值是日志.

日志文件名 (一串)

什么时候日志采集器启用时,此参数设置创建的日志文件的文件名。该值被视为strftime模式,所以%-转义符可用于指定随时间变化的文件名。(请注意,如果存在任何时区依赖项%-逃逸时,计算在日志_时区)支持%-逃逸行为与公开组报告中列出的类似strftime (opens new window)规格请注意,系统strftime没有直接使用,因此特定于平台(非标准)的扩展不起作用。默认值是postgresql-%Y-%m-%d_%H%M%S.log.

如果指定的文件名没有转义符,则应计划使用日志旋转实用程序,以避免最终填满整个磁盘。在8.4之前的版本中,如果没有%如果存在转义,PostgreSQL将附加新日志文件创建时间的纪元,但情况不再如此。

如果在中启用了CSV格式输出登录目的地, .csv将附加到带时间戳的日志文件名,以创建CSV格式输出的文件名。(如果日志文件名结束于日志,后缀将被替换。)

此参数只能在postgresql。形态文件或在服务器命令行上。

日志文件模式 (整数)

在Unix系统上,此参数设置日志文件的权限日志采集器已启用。(在Microsoft Windows上,此参数被忽略。)参数值应为以用户接受的格式指定的数字模式奇莫德乌马斯克系统调用。(要使用惯用的八进制格式,数字必须以字母开头。)0(零)。)

默认权限为0600,这意味着只有服务器所有者可以读取或写入日志文件。另一个常用的设置是0640,允许所有者组的成员读取文件。但是请注意,要使用这样的设置,您需要更改日志_目录将文件存储在群集数据目录之外的某个位置。无论如何,让日志文件具有可读性是不明智的,因为它们可能包含敏感数据。

此参数只能在postgresql。形态文件或在服务器命令行上。

对数旋转年龄 (整数)

什么时候日志采集器启用时,此参数确定使用单个日志文件的最长时间,之后将创建新日志文件。如果指定该值时没有单位,则以分钟为单位。默认值为24小时。设置为零可禁用基于时间的新日志文件创建。此参数只能在postgresql。形态文件或在服务器命令行上。

日志旋转大小 (整数)

什么时候日志采集器启用时,此参数确定单个日志文件的最大大小。将这一数量的数据发送到日志文件后,将创建一个新的日志文件。如果指定此值时没有单位,则将其视为千字节。默认值为10兆字节。设置为零可禁用基于大小的新日志文件创建。此参数只能在postgresql。形态文件或在服务器命令行上。

对数截短旋转 (布尔值)

什么时候日志采集器如果启用,则此参数将导致PostgreSQL截断(覆盖),而不是附加到任何同名的现有日志文件。但是,只有在由于基于时间的旋转而打开新文件时,才会发生截断,而不是在服务器启动或基于大小的旋转期间。禁用此选项后,在所有情况下都会将预先存在的文件追加到。例如,将此设置与日志文件名喜欢postgresql-%H.log将导致每小时生成24个日志文件,然后周期性地覆盖它们。此参数只能在postgresql。形态文件或在服务器命令行上。

示例:要保存7天的日志,请每天创建一个名为服务器日志。周一, 服务器日志。星期二,并自动用本周的日志覆盖上周的日志,设置日志文件名服务器日志%A., 对数截短旋转在…上对数旋转年龄1440.

示例:要保留24小时的日志,每小时一个日志文件,但如果日志文件大小超过1GB,也要更快地旋转,请设置日志文件名服务器日志%H%M, 对数截短旋转在…上, 对数旋转年龄60日志旋转大小1000000包括…在内%M在里面日志文件名允许进行任何大小驱动的旋转,以选择与小时初始文件名不同的文件名。

syslog_设施 (枚举)

当启用登录到系统日志时,此参数确定要使用的系统日志“设施”。你可以从中选择LOCAL0, 本地1, 本地2, 本地3, 本地4, 本地5, 本地6, 本地7; 默认值是LOCAL0。另请参阅系统的syslog守护程序的文档。此参数只能在postgresql。形态文件或在服务器命令行上。

系统日志识别 (一串)

启用登录到syslog时,此参数确定用于在syslog日志中标识PostgreSQL消息的程序名。默认值是博士后。此参数只能在postgresql。形态文件或在服务器命令行上。

系统日志序列号 (布尔值)

当登录到syslog并启用(默认设置)时,每条消息都会以递增的序列号作为前缀(例如[2])。这绕过了许多系统日志实现默认执行的“---last message repeated N times---”抑制。在更现代的syslog实现中,可以配置重复的消息抑制(例如,美元的降价在rsyslog中),所以这可能没有必要。此外,如果你真的想抑制重复的消息,你可以关闭它。

此参数只能在postgresql。形态文件或在服务器命令行上。

syslog_split_消息 (布尔值)

当启用登录到syslog时,此参数确定如何将消息传递到syslog。启用该选项(默认设置)时,消息将按行拆分,长行将被拆分为1024字节,这是传统系统日志实现的典型大小限制。关闭后,PostgreSQL server日志消息将按原样传递给syslog服务,由syslog服务来处理这些可能比较大的消息。

如果syslog最终登录到一个文本文件,那么无论哪种方式,效果都是一样的,最好保持该设置处于打开状态,因为大多数syslog实现要么无法处理大型消息,要么需要专门配置来处理它们。但是,如果syslog最终要写入其他介质,那么将消息逻辑地保存在一起可能是必要的,或者更有用。

此参数只能在postgresql。形态文件或在服务器命令行上。

事件源 (一串)

启用“记录到事件日志”时,此参数确定用于在日志中标识PostgreSQL消息的程序名。默认值是PostgreSQL。此参数只能在postgresql。形态文件或在服务器命令行上。

# 20.8.2.何时登录

记录消息 (枚举)

控制哪个消息级别写入服务器日志。有效值为调试5, 调试4, 调试3, 调试2, 调试1, 信息, 注意, 警告, 错误, 日志, 致命的惊恐.每个级别包括它后面的所有级别。级别越高,发送到日志的消息就越少。默认值是警告.注意日志在这里的排名和在客户_闵_信息。只有超级用户才能更改此设置。

log_min_error_语句 (枚举)

控制导致错误情况的SQL语句记录在服务器日志中。当前SQL语句包含在指定类型的任何消息的日志条目中严重程度或者更高。有效值为调试5, 调试4, 调试3, 调试2, 调试1, 信息, 注意, 警告, 错误, 日志, 致命的惊恐.默认值为错误,这意味着将记录导致错误、日志消息、致命错误或恐慌的语句。要有效地关闭失败语句的日志记录,请将此参数设置为惊恐。只有超级用户才能更改此设置。

log_min_duration_语句 (整数)

如果语句至少运行了指定的时间,则导致记录每个已完成语句的持续时间。例如,如果将其设置为250毫秒然后将记录所有运行250ms或更长时间的SQL语句。启用此参数有助于跟踪应用程序中未优化的查询。如果指定此值时没有单位,则以毫秒为单位。将其设置为零将打印所有语句持续时间。-1(默认值)禁用日志记录语句持续时间。只有超级用户才能更改此设置。

这将覆盖日志_闵_期间_样品,这意味着持续时间超过此设置的查询不受采样限制,并且始终记录。

对于使用扩展查询协议的客户机,解析、绑定和执行步骤的持续时间是独立记录的。

# 笔记

将此选项与日志_陈述,由于以下原因而记录的语句的文本:日志声明不会在持续时间日志消息中重复。如果不使用syslog,建议使用日志_线_前缀因此,您可以使用进程ID或会话ID将语句消息链接到稍后的持续时间消息。

日志\u最小\u持续时间\u样本 (整数)

允许对至少运行指定时间的已完成语句的持续时间进行采样。这将生成与相同类型的日志条目日志_闵_期间_陈述,但仅适用于已执行语句的子集,采样率由日志_陈述_样品_速度.例如,如果将其设置为100毫秒然后,所有运行100ms或更长时间的SQL语句都将被考虑用于采样。当流量太大而无法记录所有查询时,启用此参数会很有帮助。如果指定此值时没有单位,则以毫秒为单位。将其设置为零会对所有语句持续时间进行采样。-1(默认值)禁用采样语句持续时间。只有超级用户才能更改此设置。

此设置的优先级低于log_min_duration_语句,这意味着持续时间超过log_min_duration_语句不受采样限制,并且始终记录。

其他注意事项log_min_duration_语句也适用于此设置。

日志声明样本率 (浮点数)

确定持续时间超过日志_闵_期间_样品这将被记录下来。例如,抽样是随机的0.5这意味着在统计上,任何给定的语句都有两分之一的几率被记录下来。默认值是1,意味着记录所有采样的语句。将其设置为零将禁用采样语句持续时间日志记录,与设置相同日志\u最小\u持续时间\u样本-1。只有超级用户才能更改此设置。

日志\交易\样本\费率 (浮点数)

设置除因其他原因记录的语句外,其语句均被记录的事务的分数。它适用于每一笔新交易,而不考虑其声明的持续时间。例如,抽样是随机的0.1这意味着从统计数据来看,任何给定的交易都有十分之一的机会被记录。日志\交易\样本\费率有助于构建事务的样本。默认值是0,这意味着不记录任何其他事务中的语句。将此设置为1.记录所有事务的所有语句。只有超级用户才能更改此设置。

# 笔记

与所有语句日志记录选项一样,此选项可能会增加大量开销。

表20.2解释PostgreSQL使用的消息严重性级别。如果日志输出被发送到syslog或Windows的eventlog,那么严重性级别将按表中所示进行转换。

表20.2.消息严重性级别

严重程度 用法 系统日志 事件记录
调试1.。调试5 提供更详细的信息供开发人员使用。 调试 信息
信息 提供用户隐式请求的信息,例如真空冗长. 信息 信息
注意 提供可能对用户有用的信息,例如,长标识符的截断通知。 注意 信息
警告 提供可能出现问题的警告,例如:。,犯罪在事务块之外。 注意 警告
错误 报告导致当前命令中止的错误。 警告 错误
日志 向管理员报告感兴趣的信息,例如检查点活动。 信息 信息
致命的 报告导致当前会话中止的错误。 犯错误 错误
惊恐 报告导致所有数据库会话中止的错误。 暴击 错误

# 20.8.3.记录什么

应用程序名称 (一串)

这个应用程序名称可以是小于NAMEDATALEN字符(标准版本中有64个字符)。它通常由连接到服务器的应用程序设置。该名称将显示在pg_统计活动查看并包含在CSV日志条目中。也可以通过日志_线_前缀参数只能在中使用可打印的ASCII字符应用程序名称价值其他字符将替换为问号(?).

调试\打印\解析 (布尔值)
调试_打印_重写 (布尔值)
调试打印计划 (布尔值)

这些参数允许发出各种调试输出。设置后,它们会打印生成的解析树、查询重写器输出或每个已执行查询的执行计划。这些信息是在日志消息级别,因此默认情况下,它们将出现在服务器日志中,但不会发送到客户端。你可以通过调整来改变这一点客户_闵_信息和/或日志_闵_信息。默认情况下,这些参数处于关闭状态。

调试漂亮的打印 (布尔值)

设定好后,调试漂亮的打印缩进由生成的消息调试\打印\解析, 调试_打印_重写调试打印计划。与关闭时使用的“紧凑”格式相比,这种格式的输出可读性更强,但时间更长。默认情况下,它处于启用状态。

日志自动真空最小持续时间 (整数)

如果autovacuum执行的每个操作至少运行了指定的时间,则会导致记录这些操作。将其设置为零将记录所有自动真空操作。-1(默认设置)禁用记录自动真空操作。如果指定此值时没有单位,则以毫秒为单位。例如,如果将其设置为250毫秒然后将记录所有运行250ms或更长时间的自动真空和分析。此外,当此参数设置为除-1,如果由于锁冲突或同时删除的关系而跳过自动真空操作,则会记录一条消息。启用此参数有助于跟踪自动真空活动。此参数只能在postgresql。形态文件或在服务器命令行上;但是,可以通过更改表存储参数来覆盖单个表的设置。

记录检查点 (布尔值)

使检查点和重新启动点记录在服务器日志中。日志消息中包含一些统计信息,包括写入的缓冲区数量和写入缓冲区所花费的时间。此参数只能在postgresql。形态文件或在服务器命令行上。默认设置为关闭。

日志连接 (布尔值)

使每个尝试连接到服务器的连接都被记录,并成功完成客户端身份验证(如有必要)和授权。只有超级用户可以在会话开始时更改此参数,并且在会话中根本无法更改。默认值是.

# 笔记

一些客户端程序,如psql,在确定是否需要密码时会尝试连接两次,因此重复的“connection received”(连接已接收)消息并不一定表明存在问题。

日志中断 (布尔值)

导致记录会话终止。日志输出提供的信息与日志连接,加上课程的持续时间。只有超级用户可以在会话开始时更改此参数,并且在会话中根本无法更改。默认值是.

日志持续时间 (布尔值)

导致记录每个已完成语句的持续时间。默认值是。只有超级用户才能更改此设置。

对于使用扩展查询协议的客户机,解析、绑定和执行步骤的持续时间是独立记录的。

# 笔记

两者之间的区别日志持续时间和背景日志_闵_期间_陈述到零是不是超过了log_min_duration_语句强制记录查询的文本,但此选项不记录日志持续时间在…上log_min_duration_语句如果为正值,则会记录所有持续时间,但只有超过阈值的语句才会包含查询文本。此行为对于在高负载安装中收集统计信息非常有用。

日志错误详细 (枚举)

控制在服务器日志中记录的每条消息的详细信息量。有效值为简短生硬的, 违约冗长的,每个都会向显示的消息添加更多字段。简短生硬的不包括细节, 暗示, 查询上下文错误信息。冗长的输出包括SQLSTATE错误代码(另请参见附录A)以及生成错误的源代码文件名、函数名和行号。只有超级用户才能更改此设置。

日志主机名 (布尔值)

默认情况下,连接日志消息仅显示连接主机的IP地址。打开此参数也会记录主机名。请注意,根据主机名解析设置,这可能会造成不可忽略的性能损失。此参数只能在postgresql。形态文件或在服务器命令行上。

日志行前缀 (一串)

这是一个printf-在每个日志行开头输出的样式字符串。%字符以“转义序列”开头,替换为下面概述的状态信息。未被识别的逃跑被忽略。其他字符直接复制到日志行。某些转义仅由会话进程识别,并将被后台进程(如主服务器进程)视为空。通过在%之后和选项之前指定数字文字,状态信息可以左对齐或右对齐。负值将导致状态信息在右侧填充空格,以使其具有最小宽度,而正值将在左侧填充。填充有助于提高日志文件的可读性。

此参数只能在postgresql。形态文件或在服务器命令行上。默认值是“%m[%p]”它记录时间戳和进程ID。

逃跑 效应 仅限会议
%a 应用程序名称
%u 用户名
%d 数据库名称
%r 远程主机名或IP地址,以及远程端口
%h 远程主机名或IP地址
%b 后端类型
%p 进程ID
%P 并行组组长的进程ID(如果此进程是并行查询工作进程)
%t 没有毫秒的时间戳
%m 毫秒时间戳
%n 以毫秒为单位的时间戳(作为Unix历元)
%我 命令标记:会话当前命令的类型
%e SQLSTATE错误代码
%c 会话ID:见下文
%l 每个会话或进程的日志行数,从1开始
%s 进程开始时间戳
%五 虚拟事务ID(后端ID/localXID)
%x 事务ID(如果未分配,则为0)
%q 不产生输出,但告诉非会话进程在字符串中的这一点停止;被会话进程忽略
%Q 当前查询的查询标识符。默认情况下不会计算查询标识符,因此除非计算_查询_身份证件参数已启用,或者配置了计算查询标识符的第三方模块。
%% 字面意义的%

后端类型对应于列后端类型在视野中pg_统计活动,但日志中可能会出现该视图中未显示的其他类型。

这个%cescape打印一个准唯一会话标识符,由两个由点分隔的4字节十六进制数(不带前导零)组成。这些数字是进程开始时间和进程ID,所以%c也可以用作打印这些项目的节省空间的方式。例如,要从中生成会话标识符pg_统计活动,使用以下查询:

SELECT to_hex(trunc(EXTRACT(EPOCH FROM backend_start))::integer) || '.' ||
       to_hex(pid)
FROM pg_stat_activity;

# 提示

如果为日志行前缀,通常应将其最后一个字符设置为空格,以提供与日志行其余部分的视觉分隔。也可以使用标点符号。

# 提示

Syslog生成自己的时间戳和进程ID信息,因此如果您正在登录Syslog,您可能不希望包含这些转义。

# 提示

这个%q当包含仅在会话(后端)上下文中可用的信息(如用户名或数据库名)时,escape非常有用。例如:

log_line_prefix = '%m [%p] %q%u@%d/%a '

# 笔记

这个%Qescape始终报告由输出的行的零标识符日志_陈述因为日志声明在可以计算标识符之前生成输出,包括无法计算标识符的无效语句。

日志锁定等待 (布尔值)

控制会话等待时间超过时是否生成日志消息僵局_暂停获得一把锁。这有助于确定锁定等待是否导致性能不佳。默认值是。只有超级用户才能更改此设置。

日志\u恢复\u冲突\u等待 (布尔值)

控制启动进程等待时间超过以下时间时是否生成日志消息死锁超时用于恢复冲突。这有助于确定恢复冲突是否会阻止恢复应用WAL。

默认值是。此参数只能在postgresql。形态文件或在服务器命令行上。

日志参数最大长度 (整数)

如果大于零,则使用非错误语句记录消息记录的每个bind参数值都会被修剪为这么多字节。Zero禁止记录非错误语句日志的绑定参数。-1(默认设置)允许完全登录绑定参数。如果指定此值时没有单位,则将其视为字节。只有超级用户才能更改此设置。

此设置仅影响由于以下原因打印的日志消息:日志_陈述, 日志_期间,以及相关设置。此设置的非零值会增加一些开销,尤其是当参数以二进制形式发送时,因为需要转换为文本。

日志参数最大长度错误 (整数)

如果大于零,则错误消息中报告的每个绑定参数值将被修剪为这么多字节。零(默认值)禁用在错误消息中包含绑定参数。-1允许完整打印绑定参数。如果指定此值时没有单位,则将其视为字节。

此设置的非零值会增加开销,因为PostgreSQL需要在每个语句的开头将参数值的文本表示形式存储在内存中,无论最终是否发生错误。当以二进制形式发送绑定参数时,开销比以文本形式发送时更大,因为前者需要数据转换,而后者只需要复制字符串。

日志声明 (枚举)

控制记录哪些SQL语句。有效值为没有一个(关闭),ddl, 摩登派青年全部的(所有声明)。ddl记录所有数据定义语句,例如创造, 改变声明。摩登派青年记录所有ddl语句,加上数据修改语句,例如插入, 使现代化, 删去, 截断抄袭. 准备, 处决解释分析如果语句中包含的命令类型合适,也会记录语句。对于使用扩展查询协议的客户机,当接收到执行消息时会进行日志记录,并包含绑定参数的值(任何嵌入的单引号都会加倍)。

默认值是没有一个。只有超级用户才能更改此设置。

# 笔记

包含简单语法错误的语句即使由日志声明 = 全部的设置,因为只有在完成基本分析以确定语句类型后才会发出日志消息。对于扩展查询协议,该设置同样不会记录在执行阶段(即,在分析或规划期间)之前失败的语句。设置log_min_error_语句错误(或更低)记录此类声明。

日志\u复制\u命令 (布尔值)

使每个复制命令都记录在服务器日志中。看见第53.4节有关复制命令的详细信息。默认值为。只有超级用户才能更改此设置。

日志文件 (整数)

控制临时文件名和大小的日志记录。可以为排序、哈希和临时查询结果创建临时文件。如果通过此设置启用,则在删除每个临时文件时,都会为其发送一个日志条目。零值记录所有临时文件信息,而正值只记录大小大于或等于指定数据量的文件。如果指定此值时没有单位,则将其视为千字节。默认设置为-1,这将禁用此类日志记录。只有超级用户才能更改此设置。

对数时区 (一串)

设置用于写入服务器日志的时间戳的时区。不像时区,该值是集群范围的,因此所有会话都将一致地报告时间戳。内置默认设置为格林尼治标准时间,但这通常在postgresql。形态; initdb将在那里安装与其系统环境相对应的设置。看见第8.5.3节了解更多信息。此参数只能在中设置postgresql。形态文件或在服务器命令行上。

# 20.8.4.使用CSV格式的日志输出

包括…在内csvlog登录目的地列表提供了将日志文件导入数据库表的方便方法。此选项以逗号分隔值(CSV)格式发出日志行,其中包含以下列:带毫秒的时间戳、用户名、数据库名称、进程ID、客户端主机:端口号、会话ID、每个会话行号、命令标记、会话开始时间、虚拟事务ID、常规事务ID、错误严重性、SQLSTATE代码、错误消息、错误消息详细信息、提示、,导致错误的内部查询(如果有)、其中错误位置的字符计数、错误上下文、导致错误的用户查询(如果有并由启用)log_min_error_语句),其中错误位置的字符计数,PostgreSQL源代码中错误的位置(如果日志错误详细即将冗长的)、应用程序名称、后端类型、并行组长的进程ID和查询ID。以下是用于存储CSV格式日志输出的示例表定义:

CREATE TABLE postgres_log
(
  log_time timestamp(3) with time zone,
  user_name text,
  database_name text,
  process_id integer,
  connection_from text,
  session_id text,
  session_line_num bigint,
  command_tag text,
  session_start_time timestamp with time zone,
  virtual_transaction_id text,
  transaction_id bigint,
  error_severity text,
  sql_state_code text,
  message text,
  detail text,
  hint text,
  internal_query text,
  internal_query_pos integer,
  context text,
  query text,
  query_pos integer,
  location text,
  application_name text,
  backend_type text,
  leader_pid integer,
  query_id bigint,
  PRIMARY KEY (session_id, session_line_num)
);

要将日志文件导入此表,请使用抄袭命令:

COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;

还可以使用提供的文件_fdw单元

要简化CSV日志文件的导入,您需要做以下几件事:

  1. 设置日志文件名对数旋转年龄为日志文件提供一致、可预测的命名方案。这使您可以预测文件名,并知道单个日志文件何时完成,从而可以导入。

  2. 设置日志旋转大小设置为0以禁用基于大小的日志旋转,因为这会使日志文件名难以预测。

  3. 设置对数截短旋转在…上这样旧的日志数据就不会在同一个文件中与新的日志数据混合。

  4. 上面的表定义包括一个主键规范。这有助于防止意外导入同一信息两次。这个复制命令一次提交它导入的所有数据,因此任何错误都将导致整个导入失败。如果导入部分日志文件,然后在完成后再次导入该文件,则主键冲突将导致导入失败。等待日志完成并关闭后再导入。此过程还可以防止意外导入尚未完全写入的部分行,这也会导致复制失败。

# 20.8.5.流程标题

这些设置控制如何修改服务器进程的进程标题。流程标题通常使用ps或Windows上的Process Explorer等程序查看。看见第28.1节详细信息。

群集名称 (一串)

设置用于标识此数据库群集(实例)的名称,以用于各种用途。集群名称显示在此集群中所有服务器进程的进程标题中。此外,它是备用连接的默认应用程序名(请参阅同步的_备用物品_名字.)

名称可以是小于的任何字符串NAMEDATALEN字符(标准版本中有64个字符)。只能在中使用可打印的ASCII字符群集名称价值其他字符将替换为问号(?).如果此参数设置为空字符串,则不显示名称''(这是默认设置)。此参数只能在服务器启动时设置。

更新\u流程\u标题 (布尔值)

每次服务器收到新的SQL命令时,都可以更新进程标题。此设置默认为在…上在大多数平台上,但默认为在Windows上,因为该平台更新进程标题的开销更大。只有超级用户才能更改此设置。