如何更改 Laravel 5 中的默认登录?

How to change the default log in Laravel 5?

Laravel 5 只有一个地方可以配置日志记录。您可以指定是需要每日日志文件还是单个日志文件。

我想使用我自己的 monolog 实例,但我似乎无法弄清楚将它分配给 Laravel 日志编写器的正确位置。

我希望能够继续使用 Log facade。

在我的搜索中我偶然发现了 http://laravel.io/forum/02-11-2014-howto-log-with-mongodb,所以我知道如何实现它,但是论坛 post 是为 Laravel 4 编写的。 Laravel 5 中不再有 app/start/global.php,我正在寻找此代码的合适位置。

这是你作为中间件应该做的事情吗?

看看Illuminate\Foundation\Bootstrap\ConfigureLogging。这是设置日志记录的地方。

特别是 registerLogger() 方法。注意它是如何设置 $app['log']:

$app->instance('log', $log = new Writer(
    new Monolog($app->environment()), $app['events'])
);

所以我要做的是编辑您的 AppServiceProvider(或创建一个新的 LogServiceProvider,您的偏好)并覆盖它。

$app->instance('log', new \Illuminate\Log\Writer(
    new Monolog\Logger(... however you want to setup Monolog ...)
);

Log 外观只是访问 $app['log']。所以一旦你覆盖了它,你就全部设置好了。

我通过覆盖 Illuminate\Foundation\Bootstrap\ConfigureLogging class 解决了这个问题。小写一下如何:Configuring Custom Logs in Laravel 5