Skip to main content

log

Один лог-файл на плагин с автоматической ротацией по дням. log.write(msg) пишет строку в текстовый лог плагина — свой файл на каждый календарный день, без настройки каналов и без ручной ротации.

log.write

Пишет строку в лог плагина.

Аргументы

Возвращает

Опции

Пример

log.write рассчитан на то, чтобы дёргать его где угодно не проверяя результат — false возвращается редко и не как повод остановить логику плагина.

Файл и формат

По умолчанию (global не задан или false) путь — plugin.data_dir()/logs/<YYYY-MM-DD>.log: дата берётся из системного времени сервера на момент вызова, каждый файл открывается на дозапись, каждая строка со своей меткой времени и уровнем:
С global = true файл лежит в addons/lua/logs/<plugin_id>-<YYYY-MM-DD>.log — в том же каталоге, куда пишет собственная диагностика самого модуля (netwatch.log), но под именем плагина, чтобы логи разных плагинов не сливались в одну кашу и не пересекались с внутренними файлами модуля. Годится, когда лог нужен рядом с логами модуля — например, общий модерационный журнал, который ведут сразу несколько плагинов — а не спрятанным в приватном каталоге одного плагина. Файл — обычный текстовый файл в том же каталоге, что и file.* (для плагинного лога), но file.list() его не покажет: logs/ — отдельное хранилище.
Неизвестное значение level — ошибка Lua, а не тихая запись без метки: опечатка в уровне ловится сразу, а не при попытке отфильтровать логи потом.
global = true не выйти читать через file.* — та песочница нарочно не выходит за пределы каталога вызывающего плагина, а общий лог лежит выше него. Читать такой файл можно только руками на диске.
Ротация — это только «новый файл на новый день». Старые файлы не удаляются автоматически, ни через сколько-то дней, ни по объёму. Если нужна очистка — плагин делает её сам через file.remove (или, если нужен доступ к logs/ напрямую, через os), эта библиотека такого не предлагает намеренно, чтобы не терять чужие логи молча.
log.write не дублирует сообщение в консоль. Для вывода, который должен увидеть человек прямо сейчас, — обычный print. log — это тихая, durable запись, а не альтернативная форма print.