Протоколирование процессов и изменений

#php #laravel #logging #api-design

#php #laravel #протоколирование #api-дизайн

Вопрос:

Привет всем, я хочу поднять, возможно, небольшой вопрос для обсуждения:

В настоящее время я создаю приложение, состоящее из небольших «ботов», которые подключены к серверу cnc.

Серверное приложение создано на Php/ Laravel8 с собственным api.

Боты написаны / будут написаны на Python.

Я хочу регистрировать каждое действие / соединение ботов и сервера. Также я хочу показать последние действия пользователю на его / ее панели управления и в дальнейшем в деталях бота.

Теперь я мог бы создать 2 таблицы:

    log_types
   bot_logs
 

И регистрируйте каждое взаимодействие ботов с api и сохраняйте его в базе данных.
Для меня это имеет 2 основных недостатка:

  • Больше нагрузки на сервер mysql
  • php artisan migrate: fresh удалит все

С другой стороны, я мог бы использовать систему ведения журнала, предоставляемую laravel. Канал в этом случае будет тогда документом журнала на сервере. Недостатком для меня является то, что чтение и запись журналов происходит медленнее, чем запись в базу данных, я думаю, по крайней мере.

На данный момент моя попытка заключается в том, что я буду использовать для ведения журнала сервера (основного ведения журнала) механизм ведения журнала laravel, а для всех действий ботов / взаимодействий с api я использую базу данных.

Что вы думаете об этом подходе? Я отложил его реализацию, потому что для разработки я использую telescope, но мне нужно придумать хороший wow, пока у меня не будет продуктивного решения.

С уважением и спасибо за ваши мысли.

Комментарии:

1. Не проектируйте свою систему на основе предположений о проблемах с производительностью, которых у вас нет. Либо создайте нужную вам функцию и решайте проблемы с производительностью по мере их возникновения, либо проверьте свои предположения и основывайте свой дизайн на результатах.

2. Небольшое заблуждение. php artisan migrate:fresh следует удалять только все в вашем подключении к базе данных по умолчанию. Если бы вы использовали другое соединение для журналов или периодически реплицировали / копировали его, это не должно быть проблемой. Чтение и запись в текстовый файл должны быть быстрее, если вам не нужно делать сложные вещи с файлами журналов после (фильтрация, группировка значений и так далее). Вы также можете использовать redis. Это действительно зависит от того, насколько сложными будут ваши журналы.

3. Я до сих пор не понял цель redis? У вас есть хорошее объяснение по этому поводу? @AlexHowansky Я понимаю, что вы говорите, но вместо того, чтобы повторять ту же ошибку, что и десятки других, я хочу попытаться извлечь уроки из опыта других 🙂

4. Я поделился с вами опытом других. Не ищите микрооптимизационных решений проблемы, с которой вы на самом деле не сталкиваетесь. Просто создайте то, что вам нужно.

5. И почему «миграция: свежее удаление всего» является недостатком? Как часто вы планируете запускать его в своей производственной среде?