我想向 Laravel 应用程序中的所有日志记录添加一些数据。
我认为了解当前用户的用户名和/或客户端 IP 地址会很有帮助。
目前我正在通过执行以下操作手动添加它:
Log::info('Pre-paid activation.', array('username' => Auth::user()->username));
但我想知道如何添加侦听器或进行一些操作all日志记录有用户名(如果可用)。
由于 Laravel 开箱即用Monolog https://github.com/Seldaek/monolog,这非常简单。通过编辑即可轻松实现app/start/global.php
并在以下开头的行后添加以下内容:Log::useFiles
:
Log::useFiles(storage_path().'/logs/laravel.log');
$monolog = Log::getMonolog();
$monolog->pushProcessor(function ($record) {
$record['extra']['user'] = Auth::user() ? Auth::user()->username : 'anonymous';
$record['extra']['ip'] = Request::getClientIp();
return $record;
});
基本上,我们使用底层 Monolog 实例来注册一个处理器,该处理器将拦截要写入的任何日志记录。结果将类似于以下内容:
[2014-04-12 23:07:35] local.INFO:预付费激活。 [] {"用户":"匿名","ip":"::1"}
有关 Monolog 处理器的更多信息:https://github.com/Seldaek/monolog/blob/master/doc/01-usage.md#using-processors https://github.com/Seldaek/monolog/blob/master/doc/01-usage.md#using-processors
Extra:硬编码的extra
就是告诉Monolog添加数据作为额外的信息(可以说是多余的)。在实践中,这是为了避免覆盖原始日志调用中添加的任何上下文数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)