Это страница документации Модуль: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 по lastDebugLog: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}}