Логирование скрипта
Объект logger пишет шаги робота в панель Studio, в файл и в SQLite. Без него ночной прогон с расписания оставляет только «скрипт упал».
Сначала init
Сигнатура: init — минимальный уровень, вывод в панель, путь к текстовому логу, путь к SQLite.
$logger->init(
/* minLogLevel */ 1,
true,
true,
"C:\\bots\\logs\\run.txt",
"C:\\bots\\logs\\run.sqlite"
);
$logger->info("Старт обхода");
Параметры по порядку: минимальный уровень (0..5), запуск не из чужой IDE, писать в панель, файл, SQLite. Пустая строка пути — этот канал выключен.
Уровни сообщений
- trace / debug — отладка
- info — шаг сценария («открыл URL», «нашёл 12 строк»)
- warn — обошли проблему
- error / critical — сбой
- Общий log($level, $message, $data)
Пишите после успешного wait, не до него: иначе лог врёт, что страница уже готова. Связка: ожидание DOM.
SQLite
Выборка: getLogsByLevelFromSQLite, getLogsByPeriodFromSQLite, getLogsByMessageFromSQLite. Чистка: deleteLogsByPeriodFromSQLite.
Имеет смысл на роботах, которые крутятся неделями: файл на 500 МБ неудобно grep-ать, база — да.
Экспорт
exportAllLogsFromDbSQLiteToCsv и exportLogsByPeriodFromSQLiteToTextFile — отдать лог человеку или в Excel.
FAQ
В панели пусто. writeLogToLogPanel = false или уровень сообщения ниже минимума из init.
Кириллица в чужой системе. Есть transliterateText и флаг транслитерации в init.
Поиск: logger.