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(), не поддерживается, так как это может привести к бесконечной рекурсии. Эти сообщения будут отображаться только в консольном выводе.