如何在 Laravel 中创建和使用自定义每日日志文件?

f7n*_*f7n 8 php logging laravel

在 Laravel 中,我在以下位置定义自定义日志文件/config/logger.php

'mycustomlog' => [
  'driver' => 'stack',
  'path' => storage_path('logs/mycustomlog.log'),
  'level' => 'info',
],
Run Code Online (Sandbox Code Playgroud)

这是我的上下文堆栈驱动程序:

'stack' => [
  'driver' => 'stack',
  'channels' => ['daily', 'syslog'],
  'ignore_exceptions' => false,
],
Run Code Online (Sandbox Code Playgroud)

我这样称呼它:

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


我期望发生什么:

创建(每日)日志文件并记录异常。IEmycustomlog-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)
Run Code Online (Sandbox Code Playgroud)

解决方案:

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

mrh*_*rhn 4

您需要在配置中有通道,logger.php请参阅此处。堆栈驱动程序的重点是向多个通道报告。

'mycustomlog' => [
    'driver' => 'stack',
    'channels' => ['daily'],
    'path' => storage_path('logs/mycustomlog.log'),
    'level' => 'info',
],
Run Code Online (Sandbox Code Playgroud)