@Misha_Angelov

Как логировать ошибки php?

Нужна помощь с выводом ошибок.
У меня есть бот в телеграмме и мой файл bot.php напичкан разными функциями и классами. На него и приходят webhook-и от Телеграмм. Соответственно код выполняется без моего участия. Как мне записывать все ошибки в какой-то файл и потом выводить на другой странице?
Думал о try catch в котором был следующий код:
//file bot.php
try{
#code...
} catch (\Exception $e) {
    save_error($e);
} catch (\Throwable $th) {
    save_error($th);
}

Сама функция save_error:
function save_error($e)
{
    $class = get_class($e);
    $mes = $e->getMessage();
    $code = $e->getCode();
    $file = $e->getFile();
    $line = $e->getLine();
    $trace = $e->getTrace();
    $time = date('m-d | H:i:s');
    $text =
        "class: $class<br>".
        "time: $time<br>".
        "mes: $mes<br>".
        "code: $code<br>".
        "file: $file<br>".
        "line: $line<br>".
        print_r($trace, true);
    file_put_contents(
        'path',
        $text
    );
}
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
@FanatPHP
Чебуратор тега PHP
РНР уже всё умеет из коробки.
Чтобы просто залогировать ошибку, не нужно никаких библиотек и хендлеров.
Функция save_error - это абсолютно бессмысленные телодвижения, которые повторяют то что уже есть в РНР

Чтобы ошибки логировались, надо - сюрприз! - написать в настройках одну строчку

log_errors=1

всё, больше ничего не надо
ошибки сами будут записывться в лог
без траев, кетчей, шатдаунов и прочей ерунды

И кстати
} catch (\Exception $e) {
    save_error($e);
} catch (\Throwable $th) {
    save_error($th);
}
- это отдельная бессмыслица.
Throwable уже включает в себя Exception
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
RecruitIT Москва
от 100 000 до 160 000 ₽
от 130 000 до 180 000 ₽
Сбер Москва
До 240 000 ₽
26 окт. 2020, в 03:15
100000 руб./за проект
26 окт. 2020, в 02:20
25000 руб./за проект
26 окт. 2020, в 01:56
3500 руб./за проект