将自定义变量添加到Laravel错误日志

时间:2015-10-21 20:40:46

标签: laravel laravel-5

我想记录用户的姓名以及输出到日志的错误。如何将变量添加到输出异常的错误日志条目的开头?

1 个答案:

答案 0 :(得分:1)

我想我有一个相当简单的方法来做到这一点。

解决方案1 ​​

在名为app的{​​{1}}下创建一个新文件夹,并创建一个名为handlers的新类,该类将保留自定义monolog处理程序。

CustomStreamHandler.php

如果您从namespace App\Handlers; use Monolog\Handler\StreamHandler; use Auth; class CustomStreamHandler extends StreamHandler { protected function write(array $record) { $record['context']['user'] = Auth::check() ? Auth::user()->name : 'guest'; parent::write($record); } } 更改名称空间,请确保设置名称空间,并修改在上下文中设置用户的行,以便它与您的users表一起使用。

现在我们需要从monolog中删除当前App。 Laravel默认设置这个,据我所知,没有一个好方法可以阻止Laravel这样做。

StreamHandler中的

,我们应该修改app/Providers/AppServiceProvider函数来删除处理程序并插入新的处理程序。添加以下内容......

boot()

解决方案2

这是一个更简单的解决方案,但也不完全符合您的要求(但它可能仍适合您)。

将以下内容添加到// Get the underlying instance of monolog $monolog = \Log::getMonolog(); // Instantiate a new handler. $customStreamHandler = new \App\Handlers\CustomStreamHandler(storage_path('logs/laravel.log')); // Set the handlers on monolog. Note this would remove all existing handlers. $monolog->setHandlers([$customStreamHandler]); AppServiceProvider.php

boot()

这将只监听任何日志记录,并记录包含用户信息的调试行。