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.