Что такое логгер и зачем он нужен?
Логгер – это инструмент, позволяющий записывать информацию о работе скрипта в журнал. Этот журнал может содержать сообщения об ошибках, предупреждения, отладочную информацию, а также данные о ходе выполнения программы. В Google Apps Script логгер является важной частью разработки, позволяющей отслеживать и анализировать поведение скриптов.
Преимущества использования логгера в Google Apps Script
Использование логгера предоставляет ряд преимуществ:
- Отладка: Помогает выявлять и устранять ошибки в коде, отслеживая значения переменных и ход выполнения программы.
- Мониторинг: Позволяет следить за работой скриптов в реальном времени, выявлять узкие места и оптимизировать производительность.
- Аудит: Предоставляет возможность отслеживать действия пользователей и изменения данных, что важно для обеспечения безопасности и соответствия требованиям.
- Анализ: Помогает анализировать данные и выявлять закономерности, например, в контексте интернет-маркетинга, для оптимизации рекламных кампаний.
Различные методы логирования: Logger.log(), console.log()
В Google Apps Script есть два основных метода для логирования:
Logger.log(): Простой метод для записи сообщений в журнал выполнения скрипта, доступный в редакторе Apps Script.console.log(): Метод, аналогичный используемому в JavaScript для веб-разработки. Сообщения выводятся в консоль инструментов разработчика браузера при отладке веб-приложений, созданных на Google Apps Script.
Настройка базового логгера в Google Apps Script
Использование Logger.log() для простой записи в журнал
Logger.log() – самый простой способ начать логирование. Просто передайте сообщение в качестве аргумента:
/**
* Функция для демонстрации логирования с Logger.log()
*/
function logExample() {
const campaignName: string = "Летняя распродажа";
const budget: number = 1000;
Logger.log("Начало обработки кампании: " + campaignName);
Logger.log("Бюджет кампании: " + budget);
// ... код обработки кампании ...
Logger.log("Обработка кампании завершена: " + campaignName);
}
Просмотр журнала выполнения скрипта
Журнал выполнения скрипта можно просмотреть в редакторе Apps Script, выбрав Выполнение -> Журнал выполнения или нажав Ctrl+Enter.
Ограничения Logger.log() и альтернативы
Logger.log() подходит для простых случаев, но имеет ограничения:
- Отсутствие уровней логирования (debug, info, warning, error).
- Сложность фильтрации сообщений.
- Ограниченный объем хранимых данных.
В качестве альтернатив можно использовать:
- Запись логов в Google Sheets (описано ниже).
- Использование сервиса Stackdriver Logging (более сложная настройка).
Продвинутое логирование: запись данных в Google Sheets
Создание Google Sheet для хранения логов
Создайте новый Google Sheet, который будет использоваться для хранения логов. Дайте ему понятное имя, например, «Логи Google Apps Script».
Настройка скрипта для записи данных в таблицу (дата, время, уровень, сообщение)
/**
* Функция для записи логов в Google Sheets.
*
* @param {string} level Уровень логирования (debug, info, warning, error).
* @param {string} message Сообщение для записи в лог.
*/
function logToSheet(level: string, message: string) {
const ss: GoogleAppsScript.Spreadsheet.Spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet: GoogleAppsScript.Spreadsheet.Sheet = ss.getSheetByName("Логи") || ss.insertSheet("Логи");
sheet.appendRow([
new Date(),
level,
message
]);
}
/**
* Пример использования функции logToSheet.
*/
function exampleLogToSheet() {
logToSheet("INFO", "Скрипт начал работу.");
logToSheet("DEBUG", "Значение переменной x: " + 10);
logToSheet("WARNING", "Возникла неожиданная ситуация.");
logToSheet("ERROR", "Произошла ошибка при обработке данных.");
}
Убедитесь, что у вас есть лист с именем ‘Логи’ в вашей Google таблице. Если его нет, скрипт создаст его автоматически.
Примеры записи различных типов данных (текст, числа, объекты)
// Запись текста
logToSheet("INFO", "Имя кампании: " + campaignName);
// Запись числа
logToSheet("INFO", "Бюджет кампании: " + budget);
// Запись объекта (JSON)
const campaignData: object = { name: campaignName, budget: budget };
logToSheet("DEBUG", JSON.stringify(campaignData));
Автоматизация процесса логирования
Чтобы автоматизировать процесс логирования, можно создать триггер, который будет запускать скрипт при определенных событиях, например, при изменении данных в Google Sheets.
Лучшие практики логирования в Google Apps Script
Уровни логирования (debug, info, warning, error)
Использование уровней логирования позволяет фильтровать сообщения и фокусироваться на наиболее важных событиях. Рекомендуется использовать следующие уровни:
DEBUG: Отладочная информация, полезная при разработке.INFO: Информационные сообщения о ходе выполнения программы.WARNING: Предупреждения о возможных проблемах.ERROR: Сообщения об ошибках, которые привели к сбою в работе программы.
Использование условного логирования для отладки
Условное логирование позволяет включать и отключать логирование определенных участков кода в зависимости от необходимости. Например, можно использовать переменные окружения или параметры конфигурации для управления уровнем логирования.
const DEBUG_MODE: boolean = true; // Или читать из PropertiesService
if (DEBUG_MODE) {
logToSheet("DEBUG", "Отладочное сообщение.");
}
Форматирование сообщений лога для удобства чтения
Форматирование сообщений лога делает их более читабельными и помогает быстрее находить нужную информацию. Используйте понятные префиксы, отступы и разделители.
Обработка ошибок и запись информации об исключениях
Важно обрабатывать ошибки и записывать информацию об исключениях в лог. Это поможет выявить причины сбоев и предотвратить их в будущем.
try {
// ... код, который может вызвать ошибку ...
} catch (e) {
logToSheet("ERROR", "Произошла ошибка: " + e.message + ", stack: " + e.stack);
}
Примеры использования логгера в реальных сценариях
Логирование работы триггеров
function myFunction(e: GoogleAppsScript.Events.SheetsOnEdit) {
try {
logToSheet("INFO", "Триггер сработал.");
// ... код обработки события ...
} catch (e) {
logToSheet("ERROR", "Ошибка в триггере: " + e.message);
}
}
Отслеживание изменений в Google Sheets
Можно логировать каждое изменение в Google Sheets, чтобы отслеживать действия пользователей и восстанавливать данные в случае необходимости.
Дебаг веб-приложений на Google Apps Script
console.log() полезен для отладки веб-приложений, созданных на Google Apps Script. Сообщения выводятся в консоль инструментов разработчика браузера. Используйте console.warn() и console.error() для логирования предупреждений и ошибок соответственно.