Я использую Laravel Log Facade в своем приложении. И у меня есть несколько сервисов, таких как Mandrill, Twilio, Stripe и т. Д., Которые необходимо регистрировать в отдельном файле. Но когда я использую Log :: useFiles () для установки отдельного файла для одного из класса обертки сервиса, например:
Class Mailer { static function init() { Log::useFiles(storage_path('logs/mandrill-'.date("Ymd").'.log')); } static function send() { // some code here... Log::error("Email not sent"); } }
И я заканчиваю запись журнала как в файле журнала Laravel, так и в этом файле журнала Mandrill.
Есть ли способ сообщить Log для записи журналов только в одном файле?
В общем, странно, что он это делает, потому что, когда я использую непосредственно Монолог , он пишет только в одном файле, как и должно быть. Насколько я знаю, Log Facade использует Monolog.
Прежде всего, имейте в виду, что если вы измените обработчики журналов в своем классе Mailer, вы измените их для всего приложения.
Во-вторых, причина, по которой после изменений вы получаете журналы, записанные в 2 файла, заключается в том, что useFiles () не перезаписывает обработчик журнала по умолчанию, а добавляет новый обработчик обработчикам, которые будет использовать Monolog . Поэтому вы просто добавляете второй обработчик в список, и оба из них обрабатывают сообщение журнала, сохраняя их в разные файлы.
В-третьих, фасад Laravel's Log не предоставляет способ заменить обработчик по умолчанию – если вы хотите его использовать, вам нужно напрямую использовать Monolog . Вы можете получить к нему доступ, вызвав Log :: getMonolog () .