Как создать и использовать пользовательский файл ежедневного журнала в Laravel? - PullRequest
0 голосов
/ 07 ноября 2019

В Laravel я определяю пользовательский файл журнала в /config/logger.php:

'mycustomlog' => [
  'driver' => 'stack',
  'path' => storage_path('logs/mycustomlog.log'),
  'level' => 'info',
],

Вот мой драйвер стека для контекста:

'stack' => [
  'driver' => 'stack',
  'channels' => ['daily', 'syslog'],
  'ignore_exceptions' => false,
],

, и я называю его какследующим образом:

Log::channel('mycustomlog')->info($e);


Что я ожидаю произойти:

Создан (ежедневный) файл журнала, и исключение составляетжурнал. Т.е. mycustomlog-2019-11-07.log

Что на самом деле происходит:

Файл журнала не создается, но следующая ошибка записывается в laravel.log:

[2019-11-07 10:25:31] laravel.EMERGENCY: Unable to create configured logger. Using emergency logger. {"exception":"[object] (ErrorException(code: 0): Undefined index: channels at /var/www/vendor/laravel/framework/src/Illuminate/Log/LogManager.php:232)

РЕШЕНИЕ:

'mycustomlog' => [
   'driver' => 'daily',
   'channels' => ['syslog'],
   'path' => storage_path('logs/mycustomlog.log'),
   'level' => 'info',
],

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

Вам необходимо иметь каналы в конфигурации logger.php, см. здесь . Задача драйвера стека - сообщать о нескольких каналах.

'mycustomlog' => [
    'driver' => 'stack',
    'channels' => ['daily'],
    'path' => storage_path('logs/mycustomlog.log'),
    'level' => 'info',
],
0 голосов
/ 07 ноября 2019

Если вы не хотите, чтобы он находился в стеке, вы можете настроить свою конфигурацию так, чтобы она указала на один драйвер, подобный этому

'mycustomlog' => [
  'driver' => 'single',
  'path' => storage_path('logs/mycustomlog.log'),
  'level' => 'info',
]

Затем вызовите его так же, как вы пытались самостоятельно.

Log::channel('mycustomlog')->info($e);
...