Spec-Zone.ru › MySQL 8.4

7.4.2.5 Фильтрация журнала ошибок на основе приоритета (log_filter_internal)

Компонент фильтра log filter реализует простой способ фильтрации журнала ошибок на основе приоритета события ошибки и кода ошибки. Чтобы повлиять на то, как компонент позволяет или подавляет события ошибки, предупреждения и информации, предназначенные для журнала ошибок, установите системные переменные log_error_verbosity и log_error_suppression_list.

log_filter_internal встроен и включен по умолчанию. Если этот фильтр отключен, log_error_verbosity и log_error_suppression_list не оказывают никакого влияния, поэтому фильтрацию необходимо выполнить с помощью другой службы фильтра, если это необходимо (например, с индивидуальными правилами фильтра при использовании log_filter_dragnet). Сведения о конфигурации фильтра см. в разделе 7.4.2.1 «Конфигурация журнала ошибок».

  • Фильтрация по уровню подробности

  • Фильтрация по списку подавления

  • Взаимодействие уровня подробности и списка подавления

Фильтрация по уровню подробности

События, предназначенные для журнала ошибок, имеют приоритет ERROR, WARNING или INFORMATION. Системная переменная log_error_verbosity управляет уровнем подробности, в зависимости от приоритетов сообщений, которые должны быть записаны в журнал, как показано в следующей таблице.

Значение log_error_verbosity Разрешенные приоритеты сообщений
1 ERROR
2 ERROR, WARNING
3 ERROR, WARNING, INFORMATION

Если log_error_verbosity равно 2 или больше, сервер записывает в журнал сообщения о не безопасных для журналов инструкций. Если значение равно 3, сервер записывает в журнал прерванные соединения и ошибки отказа в доступе для новых попыток подключения. См. раздел B.3.2.9 «Ошибки связи и прерванные соединения».

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

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

Также существует приоритет сообщений SYSTEM, который не подлежит фильтрации по уровню подробности. Сообщения системы о ситуациях, не являющихся ошибками, выводятся в журнал ошибок независимо от значения log_error_verbosity. К этим сообщениям относятся сообщения о запуске и завершении работы, а также некоторые существенные изменения настроек.

В журнале ошибок MySQL системные сообщения помечены как «“System”». Другие источники журналов могут следовать этому соглашению или нет, и в результирующих журналах системные сообщения могут быть помечены меткой, используемой для уровня приоритета информации, например, «“Note”» или «“Information”». Если вы применяете дополнительную фильтрацию или перенаправление для ведения журнала на основе маркировки сообщений, системные сообщения не переопределяют ваш фильтр, а обрабатываются им так же, как и другие сообщения.

Фильтрация по списку подавления

Системная переменная log_error_suppression_list применяется к событиям, предназначенным для журнала ошибок, и указывает, какие события следует подавлять, когда они возникают с приоритетом WARNING или INFORMATION. Например, если определенный тип предупреждений считается нежелательным «“шумом”» в журнале ошибок, потому что он часто встречается, но не представляет интереса, его можно подавить. log_error_suppression_list не подавляет сообщения с приоритетом ERROR или SYSTEM.

Значение log_error_suppression_list может быть пустой строкой для отсутствия подавления или списком одного или нескольких разделенных запятыми значений, указывающих коды ошибок для подавления. Коды ошибок можно указывать в символьной или числовой форме. Числовой код можно указать с префиксом MY- или без него. Ведущие нули в числовой части не имеют значения. Примеры допустимых форматов кода:

ER_SERVER_SHUTDOWN_COMPLETE
MY-000031
000031
MY-31
31

Для повышения читаемости и переносимости предпочтительнее использовать символьные значения вместо числовых.

Хотя коды для подавления можно выразить в символьной или числовой форме, числовое значение каждого кода должно находиться в допустимом диапазоне:

  • 1 до 999: глобальные коды ошибок, которые используются сервером и клиентами.

  • 10000 и выше: коды ошибок сервера, предназначенные для записи в журнал ошибок (не отправляются клиентам).

Кроме того, каждый указанный код ошибки должен фактически использоваться MySQL. Попытки указать код, не входящий в допустимый диапазон или в допустимый диапазон, но не используемый MySQL, приводят к ошибке, и значение log_error_suppression_list остается неизменным.

Сведения о диапазонах кодов ошибок и символах и числах ошибок, определенных в каждом диапазоне, см. в разделе B.1 «Источники и элементы сообщений об ошибках», и .

Сервер может генерировать сообщения для данного кода ошибки с разными приоритетами, поэтому подавление сообщения, связанного с кодом ошибки, указанным в log_error_suppression_list, зависит от его приоритета. Предположим, что переменная имеет значение 'ER_PARSER_TRACE,MY-010001,10002'. Тогда log_error_suppression_list оказывает такое влияние на сообщения для этих кодов:

  • Сообщения, сгенерированные с приоритетом WARNING или INFORMATION, подавляются.

  • Сообщения, сгенерированные с приоритетом ERROR или SYSTEM, не подавляются.

Взаимодействие уровня подробности и списка подавления

Эффект log_error_verbosity комбинируется с эффектом log_error_suppression_list. Рассмотрим сервер, запущенный с такими настройками:

[mysqld]
log_error_verbosity=2     # error and warning messages only
log_error_suppression_list='ER_PARSER_TRACE,MY-010001,10002'

В этом случае log_error_verbosity разрешает сообщения с приоритетом ERROR или WARNING и отбрасывает сообщения с приоритетом INFORMATION. Из необработанных сообщений log_error_suppression_list отбрасывает сообщения с приоритетом WARNING и любые указанные коды ошибок.

Примечание

Значение log_error_verbosity 2, показанное в примере, также является его значением по умолчанию, поэтому влияние этой переменной на сообщения INFORMATION такое же, как описано выше, по умолчанию, без явного задания. Вам необходимо установить log_error_verbosity в 3, если вы хотите, чтобы log_error_suppression_list влиял на сообщения с приоритетом INFORMATION.

Рассмотрим сервер, запущенный с этой настройкой:

[mysqld]
log_error_verbosity=1     # error messages only

В этом случае log_error_verbosity разрешает сообщения с приоритетом ERROR и отбрасывает сообщения с приоритетом WARNING или INFORMATION. Настройка log_error_suppression_list не оказывает никакого влияния, потому что все коды ошибок, которые она могла подавить, уже отброшены из-за настройки log_error_verbosity.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/error-log-priority-based-filtering.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API