7.4.2.9 Формат вывода журнала ошибок
Каждый компонент стока журнала ошибок (запись) имеет характерный формат вывода, используемый для записи сообщений в его место назначения, но на содержимое сообщений могут влиять и другие факторы:
Доступная информация для стока журнала. Если компонент фильтра журнала, выполненный до выполнения компонента стока, удаляет поле события журнала, это поле недоступно для записи. Сведения о фильтрации журналов см. в разделе 7.4.2.4, «Типы фильтрации журнала ошибок».
Информация, имеющая отношение к стоку журнала. Не каждый сток записывает все поля, доступные в событиях ошибок.
Системные переменные могут влиять на стоки журналов. См. Системные переменные, влияющие на формат журнала ошибок.
Имена и описания полей в событиях ошибок см. в разделе 7.4.2.3, «Поля событий ошибок». Для всех стоков журналов идентификатор потока, включенный в сообщения журнала ошибок, относится к потоку в mysqld, ответственный за запись сообщения. Этот идентификатор указывает, какая часть сервера сгенерировала сообщение и согласуется с сообщениями общего журнала запросов и журнала медленных запросов, которые включают идентификатор потока подключения.
Формат вывода log_sink_internal
Внутренний сток журнала генерирует традиционный вывод журнала ошибок. Например:
2020-08-06T14:25:02.835618Z 0 [Note] [MY-012487] [InnoDB] DDL log recovery : begin
2020-08-06T14:25:02.936146Z 0 [Warning] [MY-010068] [Server] CA certificate /var/mysql/sslinfo/cacert.pem is self signed.
2020-08-06T14:25:02.963127Z 0 [Note] [MY-010253] [Server] IPv6 is available.
2020-08-06T14:25:03.109022Z 5 [Note] [MY-010051] [Server] Event Scheduler: scheduler thread started with id 5
Сообщения в традиционном формате содержат следующие поля:
time thread [label] [err_code] [subsystem] msg
Символы квадратных скобок [ и ] являются буквальными символами в формате сообщения. Они не указывают, что поля являются необязательными.
Значение label соответствует строковой форме поля приоритета события ошибки prio.
Формат вывода log_sink_json
Сток журнала в формате JSON генерирует сообщения в виде JSON-объектов, содержащих пары ключ-значение. Например:
{
"prio": 3,
"err_code": 10051,
"source_line": 561,
"source_file": "event_scheduler.cc",
"function": "run",
"msg": "Event Scheduler: scheduler thread started with id 5",
"time": "2020-08-06T14:25:03.109022Z",
"ts": 1596724012005,
"thread": 5,
"err_symbol": "ER_SCHEDULER_STARTED",
"SQL_state": "HY000",
"subsystem": "Server",
"buffered": 1596723903109022,
"label": "Note"
}
Отображенное сообщение переформатировано для удобства чтения. События, записываемые в журнал ошибок, отображаются по одному сообщению на строке.
Ключ ts (время метки) уникален для стока журнала в формате JSON. Значение представляет собой целое число, указывающее миллисекунды с начала эпохи ('1970-01-01
00:00:00' UTC).
Значения ts и buffered являются значениями временной метки Unix и могут быть преобразованы с помощью FROM_UNIXTIME() и соответствующего делителя:
mysql> SET time_zone = '+00:00';
mysql> SELECT FROM_UNIXTIME(1596724012005/1000.0);
+-------------------------------------+
| FROM_UNIXTIME(1596724012005/1000.0) |
+-------------------------------------+
| 2020-08-06 14:26:52.0050 |
+-------------------------------------+
mysql> SELECT FROM_UNIXTIME(1596723903109022/1000000.0);
+-------------------------------------------+
| FROM_UNIXTIME(1596723903109022/1000000.0) |
+-------------------------------------------+
| 2020-08-06 14:25:03.1090 |
+-------------------------------------------+
Формат вывода log_sink_syseventlog
Сток системного журнала генерирует вывод, соответствующий формату системного журнала, используемому в локальной платформе.
Формат вывода журнала ранней загрузки
Сервер генерирует некоторые сообщения журнала ошибок до обработки параметров запуска и, следовательно, до того, как он узнает настройки журнала ошибок, такие как системные переменные log_error_verbosity и log_timestamps, и прежде чем он узнает, какие компоненты журналов будут использоваться. Сервер обрабатывает сообщения журнала ошибок, генерируемые на ранних этапах процесса запуска, следующим образом:
-
Сервер буферизует события журнала (а не отформатированные сообщения журнала), что позволяет ему применить настройки конфигурации к этим событиям ретроактивно после того, как настройки будут известны, в результате чего выводимые сообщения используют настроенные настройки, а не значения по умолчанию. Кроме того, сообщения выводятся во все настроенные стоки, а не только в сток по умолчанию.
Если перед тем, как будет известна конфигурация журнала, произойдет фатальная ошибка, и серверу необходимо завершиться, сервер отформатирует буферизованные сообщения с использованием значений по умолчанию, чтобы они не были потеряны. Если фатальная ошибка не происходит, но загрузка чрезмерно замедляется до обработки параметров запуска, сервер периодически отформатирует и выведет буферизованные сообщения с использованием значений по умолчанию, чтобы не казаться невосприимчивым. Хотя это поведение использует значения по умолчанию, это предпочтительнее, чем потеря сообщений при возникновении исключительных условий.
Системные переменные, влияющие на формат журнала ошибок
Системная переменная log_timestamps контролирует часовой пояс временных меток в сообщениях, записываемых в журнал ошибок (а также в общий журнал запросов и журнал медленных запросов). Сервер применяет log_timestamps к событиям ошибок до их попадания в любой сток журнала; таким образом, это влияет на вывод сообщений об ошибках из всех стоков.
Допустимые значения log_timestamps — UTC (значение по умолчанию) и SYSTEM (локальный часовой пояс системы). Временные метки записываются в формате ISO 8601/RFC 3339: плюс хвостовое значение YYYY-MM-DDThh:mm:ss.uuuuuuZ, обозначающее время по Гринвичу (UTC), или ±hh:mm (смещение, которое указывает корректировку местного часового пояса системы относительно UTC). Например:
2020-08-07T15:02:00.832521Z (UTC)
2020-08-07T10:02:00.832521-05:00 (SYSTEM)
© 2025 Oracle
Licensed under the GPLv2 License.