Call to undefined method после обновления Laravel
Обновил Laravel с версии 5.3 до 5.7. Обновлял постепенно, поверсионно, попутно решая вопросы с зависимостями. И вот на версии 5.7 начал получать сообщения Call to undefined method Monolog\Logger::useDailyFiles(). Погуглил этот вопрос и не нашёл решения. Может гуглил плохо? Кто сталкивался и как решал данную проблему?
Ответы (1 шт):
В общем, нашел такой вот вопрос с ответом от товарища 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
]);
Надеюсь, кому-нибудь поможет.