Skip to content

Jonecuper/customLoggerPHP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Кастомный логгер

Кастомная функция для записи логов с уровнями, ротацией, именем файла и разделителями.

функция 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');
}

Анализ лог-файла для поиска новых записей уровня ERROR и отправка уведомлений администратору.

функция AnalyzeLogForErrors

  1. Используется Файл состояния:

    Используется JSON-файл (/local/logs/error_state.json) для хранения отметки времени последнего обработанного лога. Обновляется после успешной отправки уведомления.

  2. Поиск новых ошибок: Временная метка извлекается из строки логов через регулярное выражение. Сравнивается с временной отметкой из файла состояния.

  3. Уведомление только о новых ошибках: Отправляются только ошибки с меткой времени позже, чем последняя обработанная.

  4. Безопасность: Если файл состояния отсутствует, отправляются все ошибки.

Пример структуры файла состояния:

{
    "last_processed_time": 1703943900
}
  1. Настройка почтового события: Для работы отправки email необходимо настроить почтовое событие в 1С-Битрикс.
  2. Создать событие ERROR_NOTIFICATION: В админке перейдите в Настройки → Инструменты → Почтовые события. Добавить новое событие с кодом ERROR_NOTIFICATION.
  3. Создать почтовый шаблон для события: Привязать шаблон к событию ERROR_NOTIFICATION. В поле Тело письма указать:
Адресат: #EMAIL_TO#
Тема: #SUBJECT#Сообщение:
#MESSAGE#
  1. Протестировать уведомления:

Проверить отправку почты, добавив тестовую ошибку в лог.

Пример лог-файла:

Лог-файл 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;
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages