@kirill-93

Должны ли логи оставаться чистыми?

У меня проект на Laravel.
Каждое утро я начинаю с того, что просматриваю файлы storage/logs/laravel-xxxx-xx-xx.log.
Очень часто там "ненастоящие" ошибки, например ошибка, что запись уже существует в БД (unique key).
Ошибку вызывает вот такой код:
$email = request()->input('email');
/*...*/
User::create(['email' => $email]);

Все логично, но такие ошибки только засоряют лог и отвлекают от настоящих ошибок.
Чтобы этого не было, мне нужно обернуть создание записи в try-catch и не выбрасывать Exception в catch, потому что если я его выброшу, он попадет в логи.
$email = request()->input('email');
/*...*/

try {
User::create(['email' => $email]);
} catch (\Exception $e) {}


Но что если ошибка не в дублировании уникального ключа, а в чем-то еще? Я об этом не узнаю.
Как вы обрабатываете ошибки?
Должны ли логи всегда быть чистыми?
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ответы на вопрос 3
glaphire
@glaphire
PHP developer
Лучше переписать код так, чтобы "ненастоящие" ошибки не возникали, штатные ситуации хендлить, нештатные ловить в логах. Лишние логи это нездоровая ситуация для долгоиграющего проекта.
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Веб-разработка
Чтобы этого не было, мне нужно обернуть создание записи в try-catch
Ну или проверять перед попыткой вставки и отдавать пользователю адекватное сообщение.
Ответ написан
@Vitsliputsli
Вы предлагаете проверять перед каждым созданием наличие такой записи?

У вас это и так происходит, иначе бы не было ошибки. Если вам действительно все равно на недобавившиеся строки, тогда скажите об этом СУБД, on conflict do nothing, или что-то в этом роде в зависимости от СУБД.
Но почему-то мне кажется, что ваши пользователи не согласятся с такой логикой.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы