×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

3.4.8. Отчеты об ошибках и ведение журналов

3.4.8.1. Местоположение журналов
3.4.8.2. Условия протоколирования
3.4.8.3. Состав журнала
3.4.8.4. Использование вывода журнала в формате CSV
3.4.8.5. Использование вывода журнала в формате JSON
3.4.8.6. Заголовок процесса

3.4.8.1. Местоположение журналов #

log_destination (string) #

Digital Q.DataBase поддерживает несколько методов протоколирования сообщений сервера, включая stderr, csvlog, jsonlog, а также syslog. В операционной системе Windows, eventlog также поддерживается. Установите данный параметр в значение списка целевых назначений журнала, разделенных запятыми. По умолчанию вывод осуществляется stderr только в него. Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

Если csvlog включается в log_destination, записи журнала выводятся в «разделенных запятыми значений» (CSV) формате, удобном для загрузки журналов в программные средства. См. Раздел 3.4.8.4 для получения подробной информации. logging_collector должен быть включен для формирования вывода журнала в формате CSV.

Если jsonlog включается в log_destination, записи журнала выводятся в JSON формат, удобный для загрузки журналов в сторонние программы. См. Раздел 3.4.8.5 для получения подробной информации. logging_collector должен быть включен для формирования Вывод журналов в формате JSON.

При включении любого из stderr, csvlog или jsonlog являются этих параметров файл current_logfiles создается для регистрации местоположения файлов журнала, используемых в данный момент процессом сбора сообщений, и соответствующих назначений вывода. Это обеспечивает удобный способ поиска журналов, используемых экземпляром в текущее время. Ниже приведен пример содержимого данного файла:

stderr log/postgresql.log
csvlog log/postgresql.csv
jsonlog log/postgresql.json

current_logfiles пересоздается при формировании нового файла журнала в результате ротации, а также в случае когда log_destination параметр перезагружается. Файл удаляется, когда ни один из вариантов не stderr, csvlog или jsonlog являются включен в значение log_destination, а также когда процесс сбора процесс сбора данных отключен.

Примечание

В большинстве систем Unix потребуется изменить конфигурацию системной syslog службы (демона) для того, чтобы обеспечить использование syslog параметра для log_destination. Digital Q.DataBase может выполнять запись в syslog facilities LOCAL0 по LOCAL7 (см. syslog_facility), однако при стандартной syslog конфигурации на большинстве платформ все подобные сообщения будут отбрасываться. Потребуется добавить строку следующего вида:

local0.*    /var/log/postgresql

в syslog конфигурационный файл демона для обеспечения его функционирования.

В операционной системе Windows при использовании eventlog параметра для log_destination, следует зарегистрировать источник событий и соответствующую библиотеку в операционной системе, чтобы средство просмотра событий Windows могло отображать сообщения журнала событий в структурированном виде.

logging_collector (boolean) #

Данный параметр активирует процесс сбора журналов, который является фоновым процессом, выполняющим перехват сообщений журнала, отправленных в stderr и их перенаправление в файлы журналов. Данный подход зачастую более эффективен, чем запись журналов в syslog, так как сообщения определенных типов могут не отображаться в syslog вывода. (Одним из распространенных примеров являются сообщения о сбоях динамического компоновщика; другим — сообщения об ошибках, генерируемые такими сценариями, как archive_command.) Данный параметр может быть задан только при запуске сервера.

Примечание

Записывать сообщения в журнал можно stderr без использования функции сбора журналов (logging collector); в этом случае сообщения журналов будут направляться туда же, куда сервера stderr перенаправлен стандартный вывод. Однако данный метод применим только для небольших объемов журналов, так как не обеспечивает удобного способа ротации файлов журналов. Кроме того, на некоторых платформах отказ от использования функции сбора журналов может привести к потере или искажению данных, так как одновременная запись нескольких процессов в один и тот же файл журнала может привести к перезаписи данных других процессов.

Примечание

Процесс сбора журналов спроектирован так, чтобы не допускать потери сообщений. Это означает, что в условиях чрезвычайно высокой нагрузки процессы сервера могут быть заблокированы при попытке отправки дополнительных сообщений журнала, когда процесс сборщика не успевает обрабатывать данные. В свою очередь, syslog предпочитает отбрасывать сообщения, если их невозможно записать; это означает, что в таких случаях некоторые сообщения могут не заноситься в журнал, но это не приведет к блокировке остальной части системы.

log_directory (string) #

В случае когда logging_collector включен, данный параметр определяет каталог, в котором будут создаваться файлы журнала. Его можно указать в виде абсолютного пути или пути относительно каталога данных кластера. Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера. Значение по умолчанию — log.

log_filename (string) #

В случае когда logging_collector включен, данный параметр задает имена создаваемых файлов журнала. Это значение интерпретируется как strftime шаблон, поэтому %-последовательности могут использоваться для задания изменяющихся во времени имен файлов. (Учтите, что при наличии каких-либо зависящих от часового пояса %управляющих последовательностей, расчет выполняется в указанном часовом поясе. значением log_timezone.) Поддерживаемые %управляющие последовательности аналогичны тем, которые перечислены в strftime спецификации Open Group. Обратите внимание, что системная функция strftime не используется напрямую, поэтому специфичные для конкретной платформы (нестандартные) расширения не работают. Значение по умолчанию — postgresql-%Y-%m-%d_%H%M%S.log.

При указании имени файла без управляющих последовательностей необходимо использовать утилиту ротации журналов, чтобы предотвратить переполнение дискового пространства. В версиях до 8.4, если параметр % экранирующие последовательности были присутствовали, Digital Q.DataBase добавлял бы значение epoch времени создания нового файла журнала, однако это больше не так.

Если вывод в формате CSV включен в log_destination, .csv будет добавлен к содержащему метку времени имени файла журнала для формирования имени файла вывода в формате CSV. (Если значение log_filename заканчивается на .log, этот суффикс заменяется.)

Если вывод в формате JSON включен в log_destination, .json будет добавлен к содержащему метку времени имени файла журнала для формирования имени файла вывода в формате JSON. (Если значение log_filename заканчивается на .log, этот суффикс заменяется.)

Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

log_file_mode (integer) #

В системах Unix данный параметр устанавливает права доступа для файлов журналов в случае когда logging_collector включен. (В системах Microsoft Windows этот параметр игнорируется.) В качестве значения параметра ожидается числовой код режима, указанный в формате, который поддерживают chmod и umask системные вызовы. (Для использования стандартного восьмеричного формата число должно начинаться с 0 (ноль).)

По умолчанию права доступа имеют значения 0600, что означает возможность только для владельца сервера выполнять чтение или запись файлов журналов. Другой часто полезной настройкой является 0640, позволяющая членам группы владельца выполнять чтение файлов. Однако следует учитывать, что для применения такой настройки потребуется изменить log_directory для хранить файлы вне пределов каталога данных кластера. В любом случае не рекомендуется разрешать чтение файлов журналов всем пользователям, так как они могут содержать конфиденциальные данные.

Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

log_rotation_age (integer) #

В случае когда logging_collector включен, данный параметр определяет максимальное время использования отдельного файла журнала, по истечении которого создается новый файл журнала. Если данное значение указано без единиц измерения, оно интерпретируется в минутах. Значение по умолчанию — 24 часа. Установите значение «0» для отключения создания новых файлов журналов на основе времени. Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

log_rotation_size (integer) #

В случае когда logging_collector включен, данный параметр определяет максимальный размер отдельного файла журнала. После записи данного объема данных в файл журнала автоматически создается новый файл журнала. Если данное значение указано без единиц измерения, оно измеряется в килобайтах. Значение по умолчанию составляет 10 мегабайт. Установите значение «0», чтобы отключить создание новых файлов журналов при достижении определенного размера. Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

log_truncate_on_rotation (boolean) #

В случае когда logging_collector включен, данный параметр приведет к Digital Q.DataBase очистке (перезаписи) любого существующего файла журнала с тем же именем вместо добавления в него новых данных. Однако очистка будет выполняться только при открытии нового файла вследствие ротации по времени, а не при запуске сервера или ротации по размеру. Если данный параметр отключен, во всех случаях новые данные будут добавляться в конец существующих файлов. Например, использование данной настройки в сочетании с таким значением log_filename как postgresql-%H.log приведет к созданию двадцати четырех часовых файлов журналов с их последующей циклической перезаписью. Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

Пример: чтобы хранить журналы за 7 дней (по одному файлу на каждый день) с именем server_log.Mon, server_log.Tue, и т. д., а также для автоматической перезаписи файлов журнала за прошлую неделю файлами за текущую неделю, установите log_filename в значение server_log.%a, log_truncate_on_rotation в значение on, а также log_rotation_age в значение 1440.

Пример: для хранения журналов за 24 часа (по одному файлу на каждый час), но с выполнением ротации раньше срока при превышении размера файла 1 ГБ, установите значение log_filename в значение server_log.%H%M, log_truncate_on_rotation в значение on, log_rotation_age в значение 60, а также log_rotation_size в значение 1000000. Включение %M в log_filename позволяет любым операциям ротации по размеру выбирать имя файла, отличное от исходного имени файла за текущий час.

syslog_facility (enum) #

При включении ведения журнала в syslog данный параметр определяет syslog «facility» для использования. Вы можете выбрать из LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7; значение по умолчанию — LOCAL0. См. также документацию системного syslog демона. Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

syslog_ident (string) #

При включении ведения журнала в syslog данный параметр определяет имя программы, используемое для идентификации Digital Q.DataBase сообщений в syslog журналах. Значение по умолчанию — postgres. Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

syslog_sequence_numbers (boolean) #

При включении ведения журнала в syslog и данный параметр включен (по умолчанию), то каждое сообщение будет предваряться префиксом с возрастающим порядковым номером (таким как [2]). Это позволяет обойти механизм конфигурационном «--- последнее сообщение повторено N раз ---» подавления , который по умолчанию применяется во многих реализациях syslog. В более современных реализациях syslog подавление повторяющихся сообщений подлежит настройке (например, $RepeatedMsgReduction в rsyslog), вследствие чего это может быть не необходимо. Кроме того, данную функцию можно отключить, если требуется подавлять повторяющиеся сообщения.

Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

syslog_split_messages (boolean) #

При включении ведения журнала в syslog данный параметр определяет способ доставки сообщений в службу syslog. Если данный параметр включен (значение по умолчанию), сообщения разделяются построчно, а длинные строки разбиваются таким образом, чтобы их размер не превышал 1024 байта, что является типичным ограничением для традиционных реализаций syslog. Если этот параметр выключен, сообщения журнала сервера Digital Q.DataBase передаются в службу syslog «как есть», и ответственность за их обработку несет службы syslog для обработки потенциально объемных сообщений.

Если служба syslog выполняет запись в текстовый файл, то результат будет одинаковым в обоих случаях; данный параметр рекомендуется оставить включенным, так как большинство реализаций syslog либо не поддерживают обработку объемных сообщений, либо требуют специальной настройки для их обработки. Однако если служба syslog выполняет запись на другой носитель, может возникнуть необходимость сохранять логическую целостность сообщений.

Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

event_source (string) #

При включении ведения журнала в event log данный параметр определяет имя программы, которое будет использоваться для идентификации относящихся к Digital Q.DataBase сообщений. Значение по умолчанию — PostgreSQL. Данный параметр может быть установлен только в файле postgresql.conf или в командной строке сервера.

3.4.8.2. Условия протоколирования #

log_min_messages (enum) #

Определяет, сообщения каких уровней важности записываются в журнал сервера. Допустимые значения: DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, а также PANIC. Каждый уровень включает в себя все последующие уровни. Чем выше уровень, тем меньше сообщений выводится в журнал. По умолчанию используется значение WARNING. Обратите внимание, что параметр LOG имеет здесь приоритет, отличный от приоритета в client_min_messages. Только суперпользователи и пользователи, обладающие соответствующими SET привилегиями, могут изменять данный параметр.

log_min_error_statement (enum) #

Определяет, какие SQL-операторы, приводящие к возникновению ошибки, должны записываться в журнал сервера. Текущий SQL-оператор включается в запись журнала для любого сообщения указанного уровня уровень важности или выше. Допустимые значения: DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATALи PANIC. Значение по умолчанию — ERROR, что означает, что операторы, вызывающие ошибки, сообщения журнала, фатальные ошибки или аварийные ситуации (panics), будут записываться в журнал. Для фактического отключения протоколирования ошибочных операторов установите данный параметр в значение PANIC. Только суперпользователи и пользователи, обладающие соответствующими SET привилегиями, могут изменять данный параметр.

log_min_duration_statement (integer) #

Обеспечивает запись в журнал длительности выполнения каждого завершенного оператора, если оператор выполнялся в течение как минимум указанного времени. Например, если установить значение 250ms то все SQL-операторы, время выполнения которых составляет 250ms или более, будут записываться в журнал. Включение данного параметра может помочь в выявлении неоптимизированных запросов в приложениях. Если данное значение указано без единиц измерения, оно интерпретируется в миллисекундах. Установка данного параметра в значение ноль приводит к выводу длительности выполнения всех операторов. -1 (значение по умолчанию) отключает протоколирование длительности выполнения операторов. Только суперпользователи и пользователи, обладающие соответствующими SET привилегиями, могут изменять данный параметр.

Данный параметр переопределяет log_min_duration_sample, что означает, что запросы, длительность которых превышает значение данного параметра, не подлежат выборке и всегда фиксируются в журнале.

Для клиентов, использующих расширенный протокол запросов, длительность этапов Parse, Bind и Execute записывается в журнал независимо.

Примечание

При использовании данного параметра совместно с log_statement, текст операторов, фиксируемых в журнале по причине log_statement не будет дублироваться в сообщении журнала о длительности выполнения. Если вы не используете syslog, рекомендуется записывать PID или идентификатор сессии с помощью параметра log_line_prefix для обеспечения возможности сопоставления сообщения об операторе с последующим сообщением о длительности по идентификатору процесса или идентификатору сессии.

log_min_duration_sample (integer) #

Позволяет выполнять выборку длительности завершенных операторов, время выполнения которых составило как минимум указанный период времени. Это создает такие же типы записей в журнале, что и параметр log_min_duration_statement, но только для подмножества выполненных операторов, при этом частота выборки управляется параметром log_statement_sample_rate. Например, если установить значение 100ms то все SQL-операторы, время выполнения которых составляет 100ms или более, будут учитываться при сэмплировании. Активация данного параметра может быть полезна в случаях, когда интенсивность трафика слишком высока для записи всех запросов в лог. Если данное значение указано без единиц измерения, оно интерпретируется в миллисекундах. При установке значения «0» выполняется сэмплирование длительности всех операторов. -1 (значение по умолчанию) отключает сэмплирование операторов выполнения операторов. Только суперпользователи и пользователи, обладающие соответствующими SET привилегиями, могут изменять данный параметр.

Данный параметр имеет более низкий приоритет чем log_min_duration_statement, что означает следующее: операторы с длительностью, превышающей log_min_duration_statement не являются подлежат выборке и всегда фиксируются в журнале.

Прочие примечания для параметра log_min_duration_statement также применимы к данной настройке.

log_statement_sample_rate (floating point) #

Определяет долю операторов с длительностью, превышающей log_min_duration_sample которые будут записаны в лог. Сэмплирование является стохастическим, например 0.5 означает, статистически существует вероятность 50 %, что любой заданный оператор будет занесен в журнал. Значение по умолчанию — 1.0, что означает протоколирование всех выбранных операторов. Установка данного параметра в значение «0» отключает выборочное протоколирование длительности операторов, что равносильно установке log_min_duration_sample для -1. Только суперпользователи и пользователи, обладающие соответствующими SET привилегиями, могут изменять данный параметр.

log_transaction_sample_rate (floating point) #

Определяет долю транзакций, все операторы которых подлежат протоколированию, в дополнение к операторам, записываемым в журнал по иным причинам. Параметр применяется к каждой новой транзакции независимо от длительности выполнения её операторов. Сэмплирование является стохастическим, например 0.1 означает, статистически существует вероятность один к десяти, что любая заданная транзакция будет занесен в журнал. log_transaction_sample_rate может быть полезно для формирования выборки транзакций. Значение по умолчанию — 0, что означает отказ от протоколирования операторов из любых дополнительных транзакций. Установка данного параметра в 1 приводит к записи в журнал всех операторов всех транзакций. Только суперпользователи и пользователи, обладающие соответствующими SET привилегиями, могут изменять данный параметр.

Примечание

Как и другие параметры протоколирования операторов, данный параметр может создавать значительную нагрузку.

log_startup_progress_interval (integer) #

Задает период времени, по истечении которого процесс запуска занесет в журнал сообщение о длительной операции, выполнение которой всё ещё продолжается, а также интервал между последующими сообщениями о ходе выполнения данной операции. Значение по умолчанию составляет 10 секунд. Установка значения 0 отключает данную функцию. Если данное значение указано без указания единиц измерения, оно интерпретируется в миллисекундах. Данный параметр применяется отдельно к каждой операции. Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

Например, если синхронизация каталога данных занимает 25 секунд, а последующий сброс нежурналируемых отношений занимает 8 секунд, и если для данного параметра установлено значение по умолчанию 10 секунд, то сообщение будет записано в журнал при синхронизации каталога данных через 10 секунд с начала выполнения операции и повторно через 20 секунд, но при сбросе нежурналируемых отношений записи в журнале создаваться не будут.

Таблица 3.4.2 описывает уровни серьезности сообщений, используемые Digital Q.DataBase. Если вывод журнала направляется в syslog или в службу Windows eventlog, уровни важности сообщений соотносятся так, как показано в таблице.

Таблица 3.4.2. Уровни важности сообщений

Уровень важностиПрименениеsyslogeventlog
DEBUG1 .. DEBUG5Предоставление последовательно уточняемой детализированной информации для разработчиков.DEBUGINFORMATION
INFOПредоставление информации, неявно запрошенной пользователем, например, результатов выполнения команды VACUUM VERBOSE.INFOINFORMATION
NOTICEПредоставление потенциально полезной для пользователей информации, например, уведомлений об усечении длинных идентификаторов.NOTICEINFORMATION
WARNINGВывод предупреждений о вероятных проблемах, например, COMMIT при выполнении операции вне блока транзакции.NOTICEWARNING
ERRORСообщение об ошибке, вызвавшей прерывание выполнения текущей команды.WARNINGERROR
LOGВыводит информацию, представляющую интерес для администраторов, например, активность контрольных точек.INFOINFORMATION
FATALСообщает об ошибке, вызвавшей прерывание текущего сеанса текущей команды.ERRERROR
PANICСообщает об ошибке, вызвавшей прерывание всех сеансов базы данных.CRITERROR

3.4.8.3. Состав журнала #

Примечание

Выбор данных для логирования может влиять на безопасность; см. Раздел 3.9.3.

application_name (string) #

Команда application_name может представлять собой любую строку длиной менее NAMEDATALEN символов (64 символа в стандартной сборке). Данный параметр обычно устанавливается приложением при подключении к серверу. Это имя будет отображаться в pg_stat_activity представлении и включаться в записи журнала в формате CSV. Оно также может быть включено в обычные записи журнала с помощью log_line_prefix параметра. В значении параметра application_name допускается использование только печатных символов ASCII. Прочие символы заменяются шестнадцатеричными escape-последовательностями в стиле C.

debug_print_parse (boolean)
debug_print_rewritten (boolean)
debug_print_plan (boolean) #

Данные параметры позволяют выводить различную отладочную информацию. При их активации выводится результирующее дерево разбора, результат работы перезаписывателя запросов или план выполнения для каждого исполняемого запроса. Данные сообщения выводятся на LOG уровне сообщений LOG, поэтому по умолчанию они записываются в журнал сервера, но не отправляются клиенту. Это поведение можно изменить путем настройки параметров client_min_messages и/или log_min_messages. По умолчанию данные параметры отключены.

debug_pretty_print (boolean) #

При установке значения debug_pretty_print добавляются отступы в сообщения, генерируемые параметрами debug_print_parse, debug_print_rewrittenили debug_print_plan. Это обеспечивает более удобочитаемый формат но гораздо более подробный вывод по сравнению с «компактным» форматом, используемым в случае, когда он выключен. По умолчанию данный параметр включен.

log_autovacuum_min_duration (integer) #

Обеспечивает протоколирование каждого действия, выполненного процессом автоочистки (autovacuum), если оно выполнялось как минимум в течение указанного периода времени. Установка данного параметра в значение ноль обеспечивает протоколирование всех действий процесса autovacuum. -1 отключает протоколирование действий процесса autovacuum. Если данное значение указано без единиц измерения, оно интерпретируется в миллисекундах. Например, если установить данный параметр в значение 250ms то все операции автоматической очистки и анализа, которые выполняются 250ms или дольше, будут заноситься в журнал. Кроме того, если для данного параметра установлено любое значение, отличное от -1, в журнал будет выведено сообщение в случае пропуска действия autovacuum из-за конфликтующей блокировки или одновременно удаляемого отношения. Значение по умолчанию составляет 10 мин. Включение данного параметра может быть полезным при отслеживании активности процесса автоочистки. Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера; однако данная настройка может быть переопределена для отдельных таблиц путем изменения параметров хранения таблиц.

log_checkpoints (boolean) #

Обеспечивает регистрацию контрольных точек и точек перезапуска в журнале сервера. В сообщения журнала включается статистическая информация, в том числе количество записанных буферов и время, затраченное на их запись. Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера. Значение по умолчанию — on.

log_connections (boolean) #

Обеспечивает запись в журнал каждой попытки подключения к серверу, а также успешного завершения аутентификации клиента (при необходимости) и авторизации. Только суперпользователи и пользователи, обладающие соответствующими SET может изменить данный параметр в начале сеанса, причем его изменение в рамках сеанса невозможно. Значение по умолчанию — off.

Примечание

Некоторые клиентские программы, такие как psql, пытаются выполнять подключение дважды в процессе определения необходимости пароля, поэтому дублирующиеся «получено соединение» сообщения не обязательно указывают на наличие проблемы.

log_disconnections (boolean) #

Обеспечивает протоколирование завершения сеансов. Данные в лог-файле содержат информацию, аналогичную log_connections, дополненную сведениями о длительности сеанса. Только суперпользователи и пользователи, обладающие соответствующими SET может изменить данный параметр в начале сеанса, причем его изменение в рамках сеанса невозможно. Значение по умолчанию — off.

log_duration (boolean) #

Обеспечивает протоколирование длительности каждого завершённого оператора. Значение по умолчанию — off. Только суперпользователи и пользователи, обладающие соответствующими SET привилегиями, могут изменять данный параметр.

Для клиентов, использующих расширенный протокол запросов, длительность этапов Parse, Bind и Execute записывается в журнал независимо.

Примечание

Различие между включением параметра log_duration и установкой значения log_min_duration_statement в ноль заключается в том, что первый вариант превышающей log_min_duration_statement принудительно вызывает запись текста запроса в лог-файл, тогда как данный параметр — нет. Таким образом, если log_duration выполняется on и log_min_duration_statement имеет положительное значение, то все значения длительности протоколируются, но текст запроса включается только для операторов, превышающих установленный порог. данный алгоритм работы может быть полезен для сбор статистики в высоконагруженных системах.

log_error_verbosity (enum) #

Данный параметр управляет степенью детализации информации, записываемой в журнал сервера для каждого регистрируемого сообщения. Допустимыми значениями являются TERSE, DEFAULTи VERBOSE, каждое из которых добавляет дополнительные поля в выводимые сообщения. TERSE исключает запись в журнал DETAIL, HINT, QUERYи CONTEXT информации об ошибке. VERBOSE вывод включает код SQLSTATE ошибки код (см. также Приложение 8.1) и имя файла исходного кода, имя функции, и номер строки, сгенерировавшей ошибку. Только суперпользователи и пользователи, обладающие соответствующими SET привилегиями, могут изменять данный параметр.

log_hostname (boolean) #

По умолчанию в записях журнала подключений отображается только IP-адрес подключающегося узла. Включение данного параметра активирует также и регистрацию имени узла. Обратите внимание, что в зависимости от конфигурации службы разрешения имен это может привести к существенному снижению производительности. Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

log_line_prefix (string) #

Это строка в printf-стиле, выводимая в начале каждой строки журнала. % символы начинают «управляющие последовательности,» которые заменяются информацией о состоянии, как описано ниже. Нераспознанные последовательности игнорируются. Остальные символы копируются в строку журнала напрямую. Некоторые последовательности распознаются только сеансовыми процессами и воспринимаются как пустые значения фоновыми процессами, такими как основной процесс сервера. Сведения о статусе могут быть выровнены по левому или правому краю путем указания числового литерала после символа % и перед параметром. Отрицательное значение приведет к заполнению сведений о статусе пробелами справа для обеспечения минимальной ширины, тогда как положительное значение обеспечит заполнение слева. Заполнение может быть полезным для повышения удобочитаемости файлов журналов.

Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера. По умолчанию используется значение '%m [%p] ' которое фиксирует метку времени и идентификатор процесса.

Управляющая последовательностьРезультатТолько для сеанса
%aИмя приложенияyes
%uИмя пользователяyes
%dИмя базы данныхyes
%rИмя удаленного узла или IP-адрес, а также номер удаленного портаyes
%hИмя удаленного узла или IP-адресyes
%bТип серверного процессаno
%pИдентификатор процессаno
%PИдентификатор процесса лидера параллельной группы, если данный процесс является рабочим процессом параллельного запросаno
%tМетка времени без учета миллисекундno
%mМетка времени с учетом миллисекундno
%nМетка времени с миллисекундами (в формате Unix-эпохи)no
%iТег команды: тип текущей команды сеансаyes
%eКод ошибки SQLSTATEno
%cИдентификатор сеанса: см. нижеno
%lПорядковый номер строки журнала для каждого сеанса или процесса, начиная с 1no
%sМетка времени запуска процессаno
%vВиртуальный идентификатор транзакции (procNumber/localXID); см. Раздел 7.16.1no
%xИдентификатор транзакции (0, если значение не назначено); см. Раздел 7.16.1no
%qНе формирует вывод, но предписывает процессам, не связанным с сеансом, остановиться в данной точке строки; игнорируется процессами сеансаno
%QИдентификатор текущего запроса. По умолчанию идентификаторы запросов не вычисляются, поэтому значение в данном поле будет нулевым, за исключением случаев, когда compute_query_id включен соответствующий параметр или настроен сторонний модуль для вычисления идентификаторов запросов.yes
%%Литерал %no

Тип серверного процесса соответствует значению в столбце backend_type представления pg_stat_activity, но в журнале могут фиксироваться дополнительные типы, не отображаемые в указанном представлении.

Команда %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 '

Примечание

Команда %Q управляющая последовательность всегда возвращает нулевой идентификатор для строк, выводимых log_statement поскольку log_statement формирует вывод до того, как идентификатор может быть вычислен, включая некорректные операторы, для которых идентификатор не может быть вычислен.

log_lock_waits (boolean) #

Определяет, формируется ли сообщение в журнале, когда сеанс ожидает дольше, чем deadlock_timeout получения блокировки. Данный параметр полезен для определения того, вызывают ли ожидания блокировки снижение производительности. Значение по умолчанию — off. Только суперпользователи и пользователи, обладающие соответствующими SET привилегиями, могут изменять данный параметр.

log_recovery_conflict_waits (boolean) #

Определяет, формируется ли сообщение в журнале, когда процесс запуска ожидает дольше, чем deadlock_timeout разрешения конфликтов восстановления. Это полезно для определения того, препятствуют ли конфликты восстановления применению записей WAL.

Значение по умолчанию — off. Данный параметр может быть задан только в postgresql.conf конфигурационном файле или в командной строке сервера командная строка.

log_parameter_max_length (integer) #

Если значение параметра больше нуля, каждое значение параметра привязки, записываемое в журнал вместе с безошибочным сообщением о протоколировании оператора, усекается до указанного количества байт. Нулевое значение отключает протоколирование параметров привязки для безошибочных сообщений об операторах. -1 (значение по умолчанию) позволяет записывать параметры связывания в журнал в полном объеме. Если данное значение указано без единиц измерения, оно принимается в байтах. Только суперпользователи и пользователи, обладающие соответствующими SET привилегиями, могут изменять данный параметр.

Данный параметр влияет только на сообщения журнала, формируемые в результате log_statement, log_duration, и связанные с ними настройки. Ненулевые значения этого параметра влекут дополнительные накладные расходы, особенно если параметры передаются в двоичной форме, поскольку в этом случае требуется их преобразование в текст.

log_parameter_max_length_on_error (integer) #

При значении больше нуля каждый параметр связывания, указываемый в сообщениях об ошибках, усекается до данного количества байтов. Значение ноль (по умолчанию) исключает параметры связывания из сообщений об ошибках. -1 позволяет выводить параметры связывания в полном объеме. Если данное значение указано без единиц измерения, оно принимается в байтах.

Ненулевые значения данного параметра влекут накладные расходы, поскольку Digital Q.DataBase системе потребуется сохранять текстовые представления значений параметров в памяти в начале выполнения каждого оператора, вне зависимости от возникновения ошибки. Накладные расходы выше, если параметры связывания передаются в двоичной форме, а не в текстовой, так как в первом случае требуется преобразование данных преобразование, в то время как последний вариант требует только копирования строки.

log_statement (enum) #

Определяет, какие операторы SQL подлежат протоколированию. Допустимыми значениями являются: none (выкл.), ddl, mod, а также all (все операторы). ddl протоколирует все операторы определения данных такие как CREATE, ALTER, а также DROP операторы. mod протоколирует все ddl операторы, а также операторы изменения данных например, INSERT, UPDATE, DELETE, TRUNCATE, и COPY FROM. PREPARE, EXECUTE, а также EXPLAIN ANALYZE операторы также записываются в журнал, если тип содержащейся в них команды является соответствующим. Для клиентов, использующих протокол расширенных запросов, журналирование выполняется при получении сообщения Execute, при этом включаются значения параметров Bind (с дублированием всех встроенных одиночных кавычек).

Значение по умолчанию — none. Только суперпользователи и пользователи, обладающие соответствующими SET привилегиями, могут изменять данный параметр.

Примечание

Операторы, содержащие простые синтаксические ошибки, не записываются в журнал даже при значении параметра log_statement = all setting, поскольку сообщение журнала формируется только после завершения базового разбора, выполненного для определения типа оператора. В случае использования расширенного протокола запросов данный параметр также не фиксирует в журнале операторы, которые завершаются ошибкой до фазы Execute (то есть во время синтаксического анализа или планирования). Установите параметр log_min_error_statement для ERROR (или ниже) для журналирования таких операторов.

Записываемые в журнал инструкции могут раскрывать конфиденциальные данные и даже содержать пароли в открытом виде.

log_replication_commands (boolean) #

Вызывает протоколирование каждой команды репликации, а также каждого walsender захвата или освобождения слота репликации процессом в журнале сервера. См. Раздел 7.4.4 для получения дополнительной информации о командах репликации. Значение по умолчанию — off. Изменять данный параметр могут только суперпользователи и пользователи с соответствующими SET привилегиями.

log_temp_files (integer) #

Данный параметр управляет регистрацией имен и размеров временных файлов в журнале событий. Временные файлы могут создаваться для выполнения сортировки, хеширования и хранения промежуточных результатов запросов. Если данный параметр активирован, при удалении каждого временного файла в журнал работы записывается событие с указанием размера файла в байтах. При установке нулевого значения регистрируются сведения обо всех временных файлах, тогда как положительные значения обеспечивают регистрацию только тех файлов, размер которых превышает заданный или равен ему указанный объем данных. Если данное значение указано без единиц измерения, оно измеряется в килобайтах. Значение по умолчанию — -1, что отключает ведение такого журнала. Только суперпользователи и пользователи, обладающие соответствующими SET привилегиями, могут изменять данный параметр.

log_timezone (string) #

Устанавливает часовой пояс для меток времени, записываемых в журнал сервера. В отличие от TimeZone, данное значение распространяется на весь кластер, вследствие чего во всех сеансах метки времени будут отображаться единообразно. Встроенное значение по умолчанию — GMT, однако обычно оно переопределяется в postgresql.conf; initdb установит там значение, соответствующее параметрам системного окружения. См. Раздел 2.5.5.3 для получения дополнительной информации. Данный параметр может быть установлен только в postgresql.conf файле или в командной строке сервера.

3.4.8.4. Использование вывода журнала в формате CSV #

Включение csvlog в список log_destination обеспечивает удобный способ импорта файлов журналов в таблицу базы данных. Данный параметр обеспечивает вывод строк журнала в формате значений, разделенных запятыми (формат CSV), со следующими столбцами: метка времени с миллисекундами, имя пользователя, имя базы данных, идентификатор процесса, хост клиента и номер порта, идентификатор сеанса, номер строки внутри сеанса, тег команды, время начала сеанса, идентификатор виртуальной транзакции, идентификатор обычной транзакции, уровень серьезности ошибки, код SQLSTATE, сообщение об ошибке, детализация сообщения об ошибке, подсказка, внутренний запрос, вызвавший ошибку (при наличии), номер позиции символа ошибки в запросе, контекст ошибки, запрос пользователя, вызвавший ошибку (если он имеется и если данная функция включена log_min_error_statement), номер позиции символа ошибки в запросе, местоположение ошибки в исходном коде PostgreSQL (если log_error_verbosity устанавливается в значение verbose), имя приложения, тип фонового процесса, идентификатор процесса (PID) лидера параллельной группы, и идентификатор запроса. Ниже приведен пример определения таблицы для хранения вывода журналов в формате 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 FROM команду:

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

Также можно получить доступ к файлу как к сторонней таблице, используя стандартный file_fdw модуль.

Для упрощения процесса импорта файлов журналов в формате CSV необходимо выполнить следующие действия:

  1. Установите параметр log_filename и log_rotation_age для обеспечения единообразной и предсказуемой схемы именования файлов журналов. Это позволит прогнозировать имя файла и определять момент завершения формирования файла журнала для его последующего импорта.

  2. Установите параметр log_rotation_size в значение 0 для отключения ротации журналов по достижении определенного размера, так как это затрудняет прогнозирование имени файла.

  3. Установите параметр log_truncate_on_rotation в значение on чтобы старые данные журналов не смешивались с новыми в одном файле.

  4. Приведенное выше определение таблицы включает спецификацию первичного ключа. Это полезно для предотвращения случайного импорта одних и тех же данных дважды. Команда COPY фиксирует все импортируемые данные за один проход, поэтому любая ошибка приведет к сбою всего процесса импорта. Если файл журнала импортируется частично, а затем импортируется повторно после завершения, нарушение ограничения первичного ключа приведет к сбою операции импорта. Дождитесь завершения записи файла журнала и его закрытия перед выполнением импорта. Данная процедура также обеспечивает защиту от случайного импорта неполной строки, которая не была полностью записана, что также приведет к сбою COPY выполнения команды.

3.4.8.5. Использование вывода журнала в формате JSON #

Включение jsonlog в log_destination список предоставляет удобный способ импорта файлов журналов во множество различных программ. Данный параметр обеспечивает вывод строк журнала в JSON формате.

Строковые поля со значениями null исключаются из вывода. В будущем могут быть добавлены дополнительные поля. Пользовательские приложения, которые обрабатывают jsonlog вывод, должны игнорировать неизвестные поля.

Каждая строка журнала сериализуется как объект JSON с набором ключей и их соответствующими значениями, приведенными в Таблица 3.4.3.

Таблица 3.4.3. Ключи и значения записей журнала в формате JSON

Имя ключаТипОписание
timestampстрокаМетка времени с учетом миллисекунд
userстрокаИмя пользователя
dbnameстрокаИмя базы данных
pidnumberИдентификатор процесса
remote_hostстрокаХост клиента
remote_portnumberПорт клиента
session_idстрокаИдентификатор сессии
line_numnumberНомер строки в рамках текущего сеанса
psстрокаОтображение текущего состояния процесса (ps)
session_startстрокаВремя начала сеанса
vxidстрокаИдентификатор виртуальной транзакции (vxid)
txidстрокаИдентификатор обычной транзакции (txid)
error_severityстрокаУровень серьезности ошибки
state_codeстрокаКод состояния SQLSTATE
messageстрокаТекст сообщения об ошибке
detailстрокаДетализированное описание ошибки
hintстрокаПодсказка к сообщению об ошибке
internal_queryстрокаВнутренний запрос, вызвавший ошибку
internal_positionnumberПозиция курсора во внутреннем запросе
контекстстрокаКонтекст ошибки
инструкциястрокаСтрока запроса, переданная клиентом
cursor_positionnumberПозиция курсора в строке запроса
func_nameстрокаИмя функции, в которой локализована ошибка
file_nameстрокаИмя файла с местоположением ошибки
file_line_numnumberНомер строки в файле с местоположением ошибки
application_nameстрокаИмя клиентского приложения
backend_typeстрокаТип серверного процесса
leader_pidnumberИдентификатор ведущего процесса для активных параллельных рабочих процессов
query_idnumberИдентификатор запроса

3.4.8.6. Заголовок процесса #

Данные параметры управляют способом изменения заголовков серверных процессов. Заголовки процессов обычно просматриваются с помощью таких программ, как ps или, в ОС Windows, Process Explorer. См. Раздел 3.12.1 для получения подробных сведений.

cluster_name (string) #

Устанавливает имя, идентифицирующее данный кластер (экземпляр) баз данных для различных целей. Имя кластера отображается в заголовке процесса для всех серверных процессов в данном кластере. Кроме того, оно используется в качестве принимаемого по умолчанию имени приложения для резервного соединения (см. synchronous_standby_names).

Имя может быть любой строкой длиной менее чем NAMEDATALEN символов (64 символа в стандартной сборке). В имени допускается использование только печатных символов ASCII. cluster_name допускается использование только печатных символов ASCII. Прочие символы заменяются шестнадцатеричными escape-последовательностями в стиле C. Имя не отображается, если для данного параметра установлена пустая строка '' (что является значением по умолчанию). Данный параметр может быть задан только при запуске сервера.

update_process_title (boolean) #

Включает обновление заголовка процесса каждый раз, когда новая SQL-команда принимается сервером. Для этого параметра по умолчанию установлено значение on на большинстве платформ, однако он имеет значение по умолчанию off в ОС Windows из-за более высоких накладных расходов этой платформы на издержки на обновление заголовка процесса. Только суперпользователи и пользователи, обладающие соответствующими SET привилегиями, могут изменять данный параметр.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению