arcostasi / console-log
Laravel 的控制台日志门面
Requires
- php: >=7.0.0
- laravel/framework: 5.5.*|5.6.*|5.7.*||5.8.*
This package is not auto-updated.
Last update: 2024-09-30 21:33:02 UTC
README
JavaScript 控制台是我们开发和调试应用的一个非常有价值的工具。有了 console 对象及其日志方法,调用 alert() 来调试和获取变量值的日子已经一去不复返了。此外,多亏了正在进行中的标准,现代浏览器终于支持同一套方法。
需求
- PHP 7.0 或更高版本
- Laravel 5.0 或更高版本
安装
composer require arcostasi/console-log
现在您可以发布您的配置
php artisan vendor:publish --provider="Arcostasi\ConsoleLog\ConsoleLogServiceProvider"
添加到 config/app.php
'aliases' => [ ... 'Console' => Arcostasi\ConsoleLog\Facades\Console::class,
使用
将以下内容添加到您的 blade 视图模板中
<!-- Console log scripts --> @if(Session::has('console.log')) <script> @foreach(Session::get('console.log') as $console) {!! $console !!} @endforeach </script> {{ Session::forget('console.log') }} @endif
并在您的 PHP 文件(控制器或模型)中添加 Console 门面
use Console;
日志记录
Console::Log 是我们常用的将值输出到控制台的方法
Console::Log("Hello\nConsole!!!"); // Displays as text with break line Console::Log(2 + (2 * 3)); // Calculates the number and prints the result as text Console::Log(new \DateTime()); // Displays as an Object Console::Log(\App\Models\User::all()); // Displays as an Array
但我们还可以访问更多的日志方法,如 warn、info 和 error
Console::Warn('This is an example of WARNING!!'); Console::Info('This is an example of INFO!'); Console::Error('This is an example of ERROR!!! Boom 💣');
从生成的控制台输出中可以看出,使用 warn 或 error 方法也给出了堆栈跟踪
您还可以使用 Debug 方法打印出对象
use App\Models\User; use Console; ... Console::Debug(User::all());
或者您也可以使用 Trace 方法触发堆栈跟踪
use App\Models\User; use Console; ... Console::Trace(User::all());
控制台输出结果
表格
如果您愿意,甚至可以使用 Table 方法以表格格式更整洁地显示数据
use App\Models\User; use Console; ... Console::Table(User::all(['name', 'email']));
从生成的控制台输出中可以看出,使用 Table 方法
Dir & DirXML
Console Dir 和 DirXML 以美观的格式打印出对象
<?php use Console; ... $text = 'hello'; // This is a example with heredoc $html = <<<HTML <!DOCTYPE html> <html lang="en"> <head> <!-- ... --> </head> <body> <h1>$text</h1> <script> console.dirxml(document.body); </script> </body> </html> HTML; Console::DirXML($html);
从生成的控制台输出中可以看出,使用 dirxml 方法
清除
您可以使用 Clear 方法清除控制台
Console::Clear();
断言
Assert 方法是运行简单断言测试的简单方法
Console::Assert(2 == '2', '2 not == to "2"'); // this will pass, nothing will be logged Console::Assert(3 === '3', '3 not === to "3"'); // this fails, '3 not === to "3"' will be logged
计数
Count 方法用于计算使用相同提供的标签调用的次数
for ($i = 1; $i <= 5; $i++) { if ($i % 2 === 0) { Console::Count('even'); } else { Console::Count('odd'); } }
控制台输出结果
计时
如本简短文章所示,您可以使用 Time 方法开始计时,然后使用 EndTime 方法结束计时。可选地,时间可以有一个标签
use Console; Console::Time('fetching data'); $client = new \GuzzleHttp\Client(); $response = $client->get('https://api.github.com/user', ['auth' => ['user', 'pwd']]); Console::Log("Status: {$response->getStatusCode()}"); // Status 200 Console::Log("Content-type: {$response->getHeaderLine('content-type')}"); // Content-type Console::Log($response->getBody()->getContents()); // Object result Console::TimeEnd('fetching data');
控制台输出结果
Status: 200 ▼ Object name: "Anderson Costa" url: "https://api.github.com/users/arcostasi" blog: "https://arcostasi.github.com" avatar_url: "https://avatars0.githubusercontent.com/u/5041497?v=4" bio: "Software Developer" company: "AR2 Tecnologia" email: "arcostasi@gmail.com" created_at: "2013-07-18T18:04:44Z" ... fetching data: 0.264892578125ms
分组
使用 Group 和 GroupEnd 方法将控制台消息分组在一起,并可选地添加标签。注意,一个组也可以嵌套在另一个组中
Console::Group('🖍️ colors'); Console::Log('red'); Console::Log('orange'); Console::Group('HEX'); Console::Log('#FF4C89'); Console::Log('#7186FE'); Console::GroupEnd(); Console::Log('blue'); Console::GroupEnd();
控制台输出结果
致谢
- alligator.io (@alligatorio) JavaScript 控制台 API 的观察:https://alligator.io/js/console/
许可证
本库签署了 MIT 许可证,可按其条款复制。





