Модуль:DebugLog/doc

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Это страница документации Модуль:DebugLog.

Модуль предназначен для формирования отладочного лога других модулей. Может быть использован при разработке или на страницах с тестами других модулей.

Методы

[править код]
Основные:
  • DebugLog:new() — конструктор.
  • DebugLog:write(message, caller, state) — запись в лог сообщения message. caller — имя функции, state — статус (error, warning, info). Тип message может быть любым.
  • DebugLog:getAll() — вывод лога.
Прочие:
  • DebugLog:getIssues() — вывод только ошибок и предупреждений
  • DebugLog:tail(num) — вывод последних num записей
  • DebugLog:getFormatted(first, last, nowrap) — вывод записей с first по last
  • DebugLog:getSummary() — вывод строки с числом ошибок и предупреждений
  • DebugLog:getEntry(num) — получение записи num в табличном виде
  • DebugLog:formatEntry(num) — форматирование записи num в строку

Особенности

[править код]

Экземпляр таблицы с логом обычно должен быть продекларирован и инициализирован с помощью конструктора глобально, чтобы быть доступным в любом контексте. В любом случае он должен быть доступен в инициализированном виде в тех контекстах, где вызываются его методы. За включение режима логирования отвечает DebugLog.enabled, который по умолчанию false. Обычно имеет смысл установить его в true в отдельном методе, как в примере ниже. Этот отдельный метод вызывать из предпросмотра или на отдельной странице тестов.

При обычном вызове модуля DebugLog.enabled = false, это означает, что лог не пишется и не расходует ресурсы.

Использование

[править код]

В модуле:

-- подключение
local DebugLog = require( 'Module:DebugLog' )
local debLog = DebugLog:new() -- инициализация экземпляра debLog на основе прототипа DebugLog

local function foo()
	-- пример записи сообщения в лог в произвольном месте
	debLog:write('my message', 'foo', 'warning')
...

function p.loggedCall(frame)
	debLog.enabled = true -- включение для логируемого вызова
	local args = getArgs(frame) -- получение таблицы параметров фрейма, см. Module:Arguments
	local success, result = pcall(p[ args['function-name'] ], frame) -- вызов основной функции
	return debLog:getAll() .. mw.text.nowiki(tostring(result)) -- вывод лога и результата работы
end

На странице тестов или аналогичной:

{{#invoke:MyModule|loggedCall|function-name=MyFunc}}