控制台 ANSI 编码的颜色不解析,以及控制台开头的提示怎么修改(INFO WARN)
我使用php artisan server 启动控制台,想在控制台输出sql语句
protected $listen = [ ...... QueryExecuted::class => [ QueryListener::class, ], ];
QueryListener 文件
public function handle(QueryExecuted $event) { if (Config('database.print_sql')) { $s = str_replace('?', '%s', $event->sql); $bindings = array_map(function ($binding) { if (is_string($binding) || is_object($binding)) { return "\"{$binding}\""; } return $binding; }, $event->bindings); $sql = $this->addColor(sprintf($s, ...$bindings), "\033[32m"); $nowTime = $this->addColor('[' . date("Y-m-d Hs", time()) . ']', "\033[36m"); $connectionName = $this->addColor($event->connectionName, "\033[34m"); $time = $this->addColor("[time:$event->time" . "ms]", "\033[33m"); $str = $nowTime . $connectionName . $time . $sql . PHP_EOL; //echo $str //[36m[2023-10-20 09:54:22] [0m[34mmysql [0m[33m[time:1.24ms] [0m[32mselect * from`role` //where `id` = "1" limit 1[0m $handle = fopen("php://stdout", "w"); fwrite($handle, $str); fclose($handle); } } public function addColor($str, $color): string { $length = strlen($str); $str = str_pad($str, $length + 2, " "); return $color . $str . "\033[0m"; }
但是在laravel10 版本中 ANSI 编码的颜色不解析,但是在8. 版本中是可以的
下面是在10控制台的显示,不知道为什么,颜色不解析,并且不知道这个WARN 怎么改变这个提示
推荐文章: