Я не уверен, что это то, что вы ищете, но вы могли бы расширить класс LogManager и заменить Formatter своим собственным.
Я создал новый LogManager
, который выглядит следующим образом:
<?php
namespace App\Support\Log;
use Illuminate\Log\LogManager as BaseLogManager;
use Monolog\Formatter\LineFormatter;
class LogManager extends BaseLogManager
{
protected function formatter()
{
$format = "%channel%.%level_name%: %message% %context% %extra% [%datetime%]\n";
return tap(new LineFormatter($format, null, true, true), function ($formatter) {
$formatter->includeStacktraces();
});
}
}
.. который расширяет базовый менеджер журналов Laravel, но с переопределением formatter()
.
Вы также заметите, что формат сообщения изменяется, в результате чего дата добавляется к последней части строки.
Осталось только привязать это к контейнеру, а не к стандартному. Итак, в моем AppServiceProvider@register()
я добавил это:
use App\Support\Log\LogManager;
$this->app->singleton('log', function () {
return new LogManager($this->app);
});
.. и, конечно же, новый формат журнала таков:
local.INFO: test [2019-01-14 04:42:07]
Вы также можете взглянуть на класс LineFormatter и посмотреть, что еще можно с ним сделать.
Это то, что вы ищете?