如何在 Laravel 的控制台上打印消息?
Posted
技术标签:
【中文标题】如何在 Laravel 的控制台上打印消息?【英文标题】:How to print messages on console in Laravel? 【发布时间】:2017-07-08 13:04:02 【问题描述】:运行 php artisan serve 时,laravel 如何在控制台打印出一些字符串?
我试过Log::info
,但它不起作用。
【问题讨论】:
可能相关:How do I write to the console from a Laravel Controller?, How to echo to console in Laravel and Artisan? 【参考方案1】:很简单。
你可以在APP的任何地方调用它。
$out = new \Symfony\Component\Console\Output\ConsoleOutput();
$out->writeln("Hello from Terminal");
【讨论】:
【参考方案2】:试试
error_log('message here.');
Read More
如果你添加 LOG
Log::info('message');
如果 LOG 带有一个数组
Log::info(json_encode($array));
导入
Illuminate\Support\Facades\Log;
【讨论】:
Log::info()
或 Log::debug()
不会写入浏览器控制台,它们会写入 storage/logs/laravel-YYYY-MM-DD.log。此外,您必须导入Illuminate\Support\Facades\Log
。然后,您可以使用 tail -f storage/logs/laravel-2022-01-19.log
即时显示它们。【参考方案3】:
Laravel 5.6 简化了这一点,因为您现在有了一个可以利用的 logging.php
配置文件。
要知道的关键是您要输出到stdout
,而php 有一个内置的流包装器,称为php://stdout
。鉴于此,您可以为该包装器添加通道。您可以将标准输出“频道”添加到您要登录的频道中。
以下是配置的基本外观:
<?php
return [
'default' => env('LOG_CHANNEL', 'stack'),
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['single','stdout'],
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
],
'stdout' => [
'driver' => 'monolog',
'handler' => StreamHandler::class,
'with' => [
'stream' => 'php://stdout',
],
],
];
我在这里有更多信息 - Laravel 5.6 - Write to the Console
【讨论】:
哇,这太棒了。正是我所希望的。谢谢! 这太棒了!您将如何以不同的颜色显示消息,例如打印 $this->info、$this->warning、$this->error 等时命令的工作方式?我想使用服务类中的 Log::info,所以我没有 $this->info 可用。 @thirtyish 你可以使用tap
选项和这个包来设置格式化程序github.com/bramus/monolog-colored-line-formatter/blob/master/…
@MEE 谢谢。我已经很多年没有碰过那篇文章了,所以我会看看发生了什么。
@MEE 修复了它。谢谢你提醒我。【参考方案4】:
您必须配置 laravel 存储日志的位置。默认Log::info()
将日志放在日志文件而不是控制台中。你可以使用tail -f logpath
查看日志。
【讨论】:
【参考方案5】:你可以调用info()
方法
$this->info("Your Message");
【讨论】:
以上是关于如何在 Laravel 的控制台上打印消息?的主要内容,如果未能解决你的问题,请参考以下文章
如何启用 XMPPFramework 在控制台上打印原始 XML