我想记录用户的姓名以及输出到日志的错误。如何将变量添加到输出异常的错误日志条目的开头?
答案 0 :(得分: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()
这是一个更简单的解决方案,但也不完全符合您的要求(但它可能仍适合您)。
将以下内容添加到// 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()
这将只监听任何日志记录,并记录包含用户信息的调试行。