функция CustomLog
параметры:
Параметр | Значение по-умолчанию |
Описание |
---|---|---|
$message | Сообщение для логирования | |
$level | 'INFO' | Уровень логирования (INFO, ERROR, DEBUG) |
$logDir | '/local/logs/' | Директория для логов (по умолчанию /local/logs/) |
$logFileName | 'custom_log.txt' | Имя лог-файла (по умолчанию custom_log.txt) |
$maxFileSize | 1048576 | Максимальный размер файла в байтах (по умолчанию 1MB) |
Пример использования:
try {
$oldFile = $_SERVER['DOCUMENT_ROOT'] . '/test/oldFile.txt';
$newFile = $_SERVER['DOCUMENT_ROOT'] . '/test/newFile.txt';
if (!file_exists($oldFile)) {
throw new Exception("Файл $oldFile не найден.");
}
if (!rename($oldFile, $newFile)) {
throw new Exception("Ошибка переименования файла $oldFile в $newFile.");
}
// Логирование успешного выполнения
CustomLog("Файл успешно переименован: $oldFile -> $newFile", 'INFO', '/local/logs/', 'rename_log.txt');
} catch (Exception $e) {
// Логирование ошибок
CustomLog("Ошибка: " . $e->getMessage(), 'ERROR', '/local/logs/', 'rename_log.txt');
}
функция AnalyzeLogForErrors
-
Используется
Файл состояния
:Используется JSON-файл (
/local/logs/error_state.json
) для хранения отметки времени последнего обработанного лога. Обновляется после успешной отправки уведомления. -
Поиск новых ошибок: Временная метка извлекается из строки логов через регулярное выражение. Сравнивается с временной отметкой из файла состояния.
-
Уведомление только о новых ошибках: Отправляются только ошибки с меткой времени позже, чем последняя обработанная.
-
Безопасность: Если файл состояния отсутствует, отправляются все ошибки.
Пример структуры файла состояния:
{
"last_processed_time": 1703943900
}
- Настройка почтового события: Для работы отправки email необходимо настроить почтовое событие в 1С-Битрикс.
- Создать событие ERROR_NOTIFICATION: В админке перейдите в Настройки → Инструменты → Почтовые события. Добавить новое событие с кодом ERROR_NOTIFICATION.
- Создать почтовый шаблон для события: Привязать шаблон к событию ERROR_NOTIFICATION. В поле Тело письма указать:
Адресат: #EMAIL_TO#
Тема: #SUBJECT#Сообщение:
#MESSAGE#
- Протестировать уведомления:
Проверить отправку почты, добавив тестовую ошибку в лог.
Пример лог-файла:
Лог-файл test_log_with_separator.txt
:
[2024-12-30 12:05:00] [ERROR] Ошибка выполнения операции.
[2024-12-30 12:15:00] [ERROR] Файл не найден.
параметры:
Параметр | Значение по-умолчанию |
Описание |
---|---|---|
$logDir | '/local/logs/' | Директория логов |
$logFileName | 'custom_log.txt' | Имя лог-файла |
$adminEmail | Email администратора для уведомления | |
$stateFile | '/local/logs/error_state.json' | Путь к файлу состояния для хранения обработанных записей |
Пример использования
try {
AnalyzeLogAndNotifyOnlyNewErrors('/local/logs/test_logs/', 'test_log_with_separator.txt', '[email protected]');
echo "Анализ завершен, уведомление отправлено (если были новые ошибки)." . PHP_EOL;
} catch (Exception $e) {
echo "Ошибка анализа логов: " . $e->getMessage() . PHP_EOL;
}