类型: | 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
命令标签:会话当前命令的类型是%e
SQLSTATE 错误代码否%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]
在 StackOverflow
在 pgsql-hackers
- Re: Adding the extension name to EData / log_line_prefix
- Re: Fix for timestamp lag issue from emit_log_hook when GUC log_line_prefix has '%m'
- Fix for timestamp lag issue from emit_log_hook when GUC log_line_prefix has '%m'
- Re: Logging which local address was connected to in log_line_prefix
- Adding the extension name to EData / log_line_prefix