Я создаю проект на Laravel 7.3 с несколькими заданиями, которые выполняются одновременно. Мне нужно, чтобы каждое задание записывало журналы в разные файлы с ежедневной ротацией. Имя файла журнала должно основываться на модели, которую обрабатывает задание.
Проблема в том, что я не могу найти разумного решения.
Что я пробовал:
1) создание нескольких каналов в config/logging.php
.
Это работает, как и ожидалось, но на данный момент существует около 50 различных вакансий, и их количество продолжает расти. Метод уродлив и почти не поддерживается.
2) настройка Config(['logging.channels.CUSTOMCHANNEL.path' => storage_path('logs/platform/'.$this->platform->name.'.log')]);
.
Возиться с переменной Config было плохой идеей, потому что за один раз выполнялось много заданий. В результате сообщения от одного задания часто записывались в журнал другого задания.
3) используя Log::useDailyFiles()
Похоже, это перестает работать с laravel 5.5 или 5.6. Просто получаю ошибку Call to undefined method Monolog\Logger::useDailyFiles()
. Есть мысли, как заставить работать в laravel 7?
4) используя параметр tap
для канала в config/logging.php
.
Пример в документации laravel Нет идей, как передать модель name в CustomizeFormatter, чтобы указать имя файла.
Я почти уверен, что есть умное решение, и мне просто что-то не хватает. Есть предложения? Спасибо!