Тип: | string |
По умолчанию: | %m [%p] |
Контекст: | sighup |
Перезапуск: | false |
Строка, в стиле функции printf, которая выводится в начале каждой строки журнала сообщений. С символов %
начинаются управляющие последовательности, которые заменяются статусной информацией, описанной ниже. Неизвестные управляющие последовательности игнорируются. Все остальные символы напрямую копируются в выводимую строку. Некоторые управляющие последовательности используются только для пользовательских процессов и будут игнорироваться фоновыми процессами, например основным процессом сервера. Статусная информация может быть выровнена по ширине влево или вправо указанием числа после % и перед кодом последовательности. Отрицательное число дополняет значение пробелами справа до заданной ширины, а положительное число — слева. Выравнивание может быть полезно для улучшения читаемости. Этот параметр можно задать только в файле postgresql.conf или в командной строке при запуске сервера. Со значением по умолчанию, '%m [%p] '
, в журнал выводится метка времени и идентификатор процесса. СпецсимволНазначениеТолько для пользовательского процесса%a
Имя приложения (application_name)да%u
Имя пользователяда%d
Имя базы данныхда%r
Имя удалённого узла или IP-адрес, а также номер портада%h
Имя удалённого узла или IP-адресда%p
Идентификатор процессанет%t
Штамп времени, без миллисекунднет%m
Штамп времени, с миллисекундаминет%n
Штамп времени, с миллисекундами (в виде времени Unix)нет%i
Тег команды: тип текущей команды в сессиида%e
Код ошибки SQLSTATEнет%c
Идентификатор сессии. Подробности ниженет%l
Номер строки журнала для каждой сессии или процесса. Начинается с 1нет%s
Штамп времени начала процессанет%v
Идентификатор виртуальной транзакции (backendID/localXID)нет%x
Идентификатор транзакции (0 если не присвоен)нет%q
Ничего не выводит. Непользовательские процессы останавливаются в этой точке. Игнорируется пользовательскими процессаминет%%
Выводит %
нет%c
выводит псевдоуникальный номер сеанса, состоящий из двух 4-байтных шестнадцатеричных чисел (без ведущих нулей), разделённых точкой. Эти числа представляют время старта процесса и идентификатор процесса, поэтому %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 также формирует штамп времени и идентификатор процесса, поэтому вероятно нет смысла использовать соответствующие управляющие последовательности при использовании 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