类型: string
默认: %m [%p]
上下文: sighup
重新开始: false

这是一个printf风格的字符串,它在每个日志行的开头输出。%字符开始转义序列,它将被按照下文描述的替换成状态信息。未识别的转义被忽略。其他字符被直接复制到日志行。某些转义只被会话进程识别并且被主服务器进程等后台进程当作空。通过指定一个在%之后和该选项之前的数字可以让状态信息左对齐或右对齐。 负值将导致在右边用空格填充状态信息已达到最小宽度,而正值则在左边填充。填充对于日志文 件的人类可读性大有帮助。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。默认值是'%m [%p] ',它记录时间戳和进程ID。 转义效果只限会话%a应用名是%u用户名是%d数据库名是%r远程主机名或 IP 地址,以及远程端口是%h远程主机名或 IP 地址是%p进程 ID否%t无毫秒的时间戳否%m带毫秒的时间戳否%n带毫秒的时间戳(作为 Unix 时间戳)no%i命令标签:会话当前命令的类型是%eSQLSTATE 错误代码否%c会话 ID:见下文否%l对每个会话或进程的日志行号,从 1 开始否%s进程开始的时间戳否%v虚拟事务 ID (backendID/localXID)否%x事务 ID (如果未分配则为 0)否%q不产生输出,但是告诉非会话进程在字符串的这一点停止;会话进程忽略否%%纯文字 %%c转义打印一个准唯一的会话标识符,它由两个 4 字节的十六进制数(不带先导零)组成,以点号分隔。这些数字是进程启动时间和进程 ID,因此%c也可以被用作保存打印这些项的方式的空间。例如,要从pg_stat_activity生成会话标识符,使用这个查询:SELECT to_hex(trunc(EXTRACT(EPOCH FROM backend_start))::integer) || '.' || to_hex(pid)FROM pg_stat_activity;

如果你为log_line_prefix设置了非空值,你通常应该让它的最后一个字符为空格,这样用以提供和日志行的剩余部分的视觉区别。也可以使用标点符号。

Syslog产生自己的时间戳和进程 ID 信息,因此如果你记录到syslog你可能不希望包括哪些转义。

在包括仅在会话(后端)上下文中可用的信息(如用户名或者数据库名)时,%q转义很有用。例如:log_line_prefix = '%m [%p] %q%u@%d/%a '

建议 [EN]

Primarily useful for providing extra information when logging to syslog or eventlog. Try "%h:%d:%u:%c %t" for this.

条评论