Call to undefined method после обновления Laravel

Обновил Laravel с версии 5.3 до 5.7. Обновлял постепенно, поверсионно, попутно решая вопросы с зависимостями. И вот на версии 5.7 начал получать сообщения Call to undefined method Monolog\Logger::useDailyFiles(). Погуглил этот вопрос и не нашёл решения. Может гуглил плохо? Кто сталкивался и как решал данную проблему?


Ответы (1 шт):

Автор решения: Him

В общем, нашел такой вот вопрос с ответом от товарища Lin. В этом ответе говориться о каналах логирования в Laravel. В общем, если раньше логи писались так:

$monolog = Log::getLogger();
        $monolog_handlers = $monolog->getHandlers();
        $monolog->popHandler();
        Log::useDailyFiles(storage_path('logs/checker'), 5);
        $monolog_handlers = $monolog->getHandlers();
        $monolog_handlers[0]->setFilenameFormat('{filename}-{date}.log', 'Y-m-d');
        Agent::setUserAgent($request->header('User-Agent'));
        Log::alert('Checker.',[
            'ad_id'=>$ad_id,
            'url' => $url,
            'ad_url' => $ad_url,
            'country_id' => $country_id
        ]);

То в новой версии Laravel нужно добавить в файл .env такую запись

LOG_CHANNEL=daily

Потом создать файл logging.php в папке config (пример можно скачать тут) и добавить запись с новым каналом:

'checker' => [
        'driver' => 'daily',
        'path' => storage_path('logs/checker.log'),
        'days' => 5,
    ],

И теперь логи пишутся так:

$monolog = Log::getLogger();
    $monolog_handlers = $monolog->getHandlers();
    $monolog->popHandler();
    Agent::setUserAgent($request->header('User-Agent'));
    Log::channel('checker')->alert('Сhecker.',[
        'ad_id'=>$ad_id,
        'url' => $url,
        'ad_url' => $ad_url,
        'country_id' => $country_id
    ]);

Надеюсь, кому-нибудь поможет.

→ Ссылка