接下来是详细解说。
1). 使用 Composer 安装该扩展包:
composer require barryvdh/laravel-debugbar
2). 安装完成后,修改 config/app.php
在 providers
数组内追加 Debugbar 的 Provider
'providers' => [
...
Barryvdh\Debugbar\ServiceProvider::class,
],
同时在 aliases
数组内追加如下内容
'aliases' => [
...
'Debugbar' => Barryvdh\Debugbar\Facade::class,
]
3). 接下来运行以下命令生成此扩展包的配置文件 config/debugbar.php
:
php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"
打开 config/debugbar.php
,将 enabled
的值设置为:
'enabled' => env('APP_DEBUG', false),
修改完以后, Debugbar 分析器的启动状态将由 .env
文件中 APP_DEBUG
值决定。
页面刷新后, 看到下图即表示运行成功。
你现在可以使用门面来获取系统错误信息.该门面的调用方式符合PSR-3规范(debug, info, notice, warning, error, critical, alert, emergency):
Debugbar::info($object);
Debugbar::error('Error!');
Debugbar::warning('Watch out…');
Debugbar::addMessage('Another message', 'mylabel');
以及获取应用计时信息:
Debugbar::startMeasure('render','Time for rendering');
Debugbar::stopMeasure('render');
Debugbar::addMeasure('now', LARAVEL_START, microtime(true));
Debugbar::measure('My long operation', function() {
// Do something…
});
或者记录异常发生情况:
try {
throw new Exception('foobar');
} catch (Exception $e) {
Debugbar::addThrowable($e);
}
在该包中还存在公共函数来处理一些常用需求:
// All arguments will be dumped as a debug message
debug($var1, $someString, $intValue, $object);
start_measure('render','Time for rendering');
stop_measure('render');
add_measure('now', LARAVEL_START, microtime(true));
measure('My long operation', function() {
// Do something…
});
你可以向服务容器或者门面中注册自定义的消息收集器:
Debugbar::addCollector(new DebugBar\DataCollector\MessagesCollector('my_messages'));
//Or via the App container:
$debugbar = App::make('debugbar');
$debugbar->addCollector(new DebugBar\DataCollector\MessagesCollector('my_messages'));
默认情况下,该调试工具在</body>
之前被注入,如果你想自定义注入位置,将配置文件中的inject
设置为false
,然后在需要位置渲染该提示信息
$renderer = Debugbar::getJavascriptRenderer();
注意:如果不适用默认的自动注入,则无法获取请求的相关信息,因为请求信息是在响应信息之后被加载的.为了能收集请求信息,你可以在配置文件中进行设置.
在运行期间,可以通过以下方式开启或者关闭调试工具:
\Debugbar::enable();
\Debugbar::disable();
注意:一旦开启,该调试工具中的collector会被加载(造成额外的运行消耗),所以,所以如果你想在生产环境下使用该调试工具,请在配置文件中进行关闭,仅在需要时进行开启.