Logger

Наследует: RefCounted < Object

Пользовательский журнал для получения сообщений из внутренней ошибки/предупреждения.

Описание

Пользовательский журнал для получения сообщений из внутренних ошибки/предупреждения. Регистраторы регистрируются через OS.add_logger().

Методы

void

_log_error(function: String, file: String, line: int, code: String, rationale: String, editor_notify: bool, error_type: int, script_backtraces: Array[ScriptBacktrace]) virtual

void

_log_message(message: String, error: bool) virtual


Перечисления

enum ErrorType: 🔗

ErrorType ERROR_TYPE_ERROR = 0

Полученное сообщение является ошибкой.

ErrorType ERROR_TYPE_WARNING = 1

Полученное сообщение является предупреждением.

ErrorType ERROR_TYPE_SCRIPT = 2

Полученное сообщение является ошибкой скрипта.

ErrorType ERROR_TYPE_SHADER = 3

Полученное сообщение является ошибкой шейдера.


Описания метода

void _log_error(function: String, file: String, line: int, code: String, rationale: String, editor_notify: bool, error_type: int, script_backtraces: Array[ScriptBacktrace]) virtual 🔗

Вызывается при регистрации ошибки. Ошибка содержит function, file и line, из которых она возникла, а также либо code, сгенерировавшего ошибку, либо rationale.

Тип ошибки, предоставляемый error_type, описан в перечислении ErrorType.

Кроме того, script_backtraces предоставляет трассировки стека для каждого из языков сценариев. По умолчанию они будут содержать кадры стека только в сборках редактора и отладочных сборках. Чтобы включить их и для релизных сборок, необходимо включить ProjectSettings.debug/settings/gdscript/always_track_call_stacks.

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

Примечание: Параметр script_backtraces не будет содержать никаких захваченных переменных из-за его непомерно высокой стоимости. Чтобы получить их, вам потребуется самостоятельно захватывать трассировки стека из виртуальных методов Logger, используя Engine.capture_script_backtraces().

Примечание: Запись ошибок из этого метода с помощью таких функций, как @GlobalScope.push_error() или @GlobalScope.push_warning(), не поддерживается, так как это может привести к бесконечной рекурсии. Эти ошибки будут отображаться только в консольном выводе.


void _log_message(message: String, error: bool) virtual 🔗

Вызывается при записи сообщения в лог. Если error равно true, то это сообщение предназначалось для отправки в stderr.

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

Примечание: Запись другого сообщения из этого метода с использованием таких функций, как @GlobalScope.print(), не поддерживается, так как это может привести к бесконечной рекурсии. Эти сообщения будут отображаться только в консольном выводе.