class YeahMyController extends BaseController {
public function getSomething() {
Console::info('mymessage'); // <-- what do I put here?
return 'yeahoutputthistotheresponse';
}
}
\Log::info('This is some useful information.');
\Log::warning('Something could be going wrong.');
\Log::error('Something is really going wrong.');
または、Laravelの現在のバージョンでは、次のようになります。
info('This is some useful information.');
/laravel/storage/logs/laravel-
'stderr' => [
'driver' => 'monolog',
'handler' => StreamHandler::class,
'formatter' => env('LOG_STDERR_FORMATTER'),
'with' => [
'stream' => 'php://stderr',
],
],
コントローラ内:
use Illuminate\Support\Facades\Log;
Log::channel('stderr')->info('Something happened!');
$out = new \Symfony\Component\Console\Output\ConsoleOutput();
$out->writeln("Hello from Terminal");
$output = new Symfony\Component\Console\Output\ConsoleOutput();
$output->writeln("my message ");
このためのショートカットが見つからなかったので、重複を避けるためにファサードを作成することをお勧めします。
$cmd = new ConsoleCommand;
$cmd->error("Aw snap!");
$cmd->table($headers, $rows);
$answer = $cmd->ask("Tell me, what do you need?");
//even Symfony's progress bar
$cmd->outputStyle->progressStart(5); //set n = 100% (here 100% is 5 steps)
$cmd->outputStyle->progressAdvance(); //you can call it n times
$cmd->outputStyle->progressFinish(); //set to 100%
またはもちろん、独自のファサード、静的シングルトンなど、またはとにかく必要に応じてラップすることもできます。
クラス自体
class ConsoleCommand extends \Illuminate\Console\Command
{
protected $name = 'NONEXISTENT';
protected $hidden = true;
public $outputSymfony;
public $outputStyle;
public function __construct($argInput = null)
{
parent::__construct();
$this->input = new \Symfony\Component\Console\Input\StringInput($argInput);
$this->outputSymfony = new \Symfony\Component\Console\Output\ConsoleOutput();
$this->outputStyle = new \Illuminate\Console\OutputStyle($this->input, $this->outputSymfony);
$this->output = $this->outputStyle;
}
}
class ConsoleOutput extends Facade {
protected static function getFacadeAccessor() {
return 'consoleOutput';
}
}
class ConsoleOutputServiceProvider extends ServiceProvider
{
public function register(){
App::bind('consoleOutput', function(){
return new \Symfony\Component\Console\Output\ConsoleOutput();
});
}
}
3)config \ app.phpファイルにこれらすべてのものを追加し、プロバイダーとエイリアスを登録します。
'providers' => [
//other providers
App\Providers\ConsoleOutputServiceProvider::class
],
'aliases' => [
//other aliases
'ConsoleOutput' => App\Facades\ConsoleOutput::class,
],
これで、Laravelアプリケーションの任意の場所で、次のようにメソッドを呼び出すだけです。
ConsoleOutput::writeln('hello');
これがお役に立てば幸いです。
'stdout' => [
'driver' => 'monolog',
'handler' => StreamHandler::class,
'with' => [
'stream' => 'php://stdout',
],
'level' => 'info',
],
次に、スタックログチャネルのチャネルの1つとして「stdout」を追加しました。
'default' => env('LOG_CHANNEL', 'stack'),
'stack' => [
'driver' => 'stack',
'channels' => ['stdout', 'daily'],
],
このようにして、ローカル開発用のファイル(または、アクセスできる場合はインスタンス上でも)でログを取得しますが、さらに重要なことに、CloudWatchLogsに保存されているstdoutに送信されます。
$stdout = fopen('php://stdout', 'w');
fwrite($stdout, 'Hello, World!' . PHP_EOL);
PHP_EOL新しい行を追加します。
use Symfony\Component\Console\Output\ConsoleOutput;
クラスメソッド内
$output = new ConsoleOutput();
$output->writeln('my text that appears in command line ');
$dumpMe = new App\User([ 'name' => 'Cy Rossignol' ]);
(new Symfony\Component\VarDumper\Dumper\CliDumper())->dump(
(new Symfony\Component\VarDumper\Cloner\VarCloner())->cloneVar($dumpMe)
);
もう少しコードが必要ですが、その見返りとして、コンソールにフォーマットされた読み取り可能な出力が表示されます。これは、複雑なオブジェクトや配列のデバッグに特に役立ちます。
App\User {#17
#attributes: array:1 [
"name" => "Cy Rossignol"
]
#fillable: array:3 [
0 => "name"
1 => "email"
2 => "password"
]
#guarded: array:1 [
0 => "*"
]
#primaryKey: "id"
#casts: []
#dates: []
#relations: []
... etc ...
}
これをさらに一歩進めるために、出力に色を付けることもできます。このヘルパー関数をプロジェクトに追加して、入力を節約します。
function toConsole($var)
{
$dumper = new Symfony\Component\VarDumper\Dumper\CliDumper();
$dumper->setColors(true);
$dumper->dump((new Symfony\Component\VarDumper\Cloner\VarCloner())->cloneVar($var));
}
完全なウェブサーバー(ApacheやNginxなどartisan serve)の背後でアプリを実行している場合は、この関数を少し変更して、ダンパーのプリティファイされた出力をログ(通常はstorage / logs / laravel.log)に送信できます。
function toLog($var)
{
$lines = [ 'Dump:' ];
$dumper = new Symfony\Component\VarDumper\Dumper\CliDumper();
$dumper->setColors(true);
$dumper->setOutput(function ($line) use (&$lines) {
$lines[] = $line;
});
$dumper->dump((new Symfony\Component\VarDumper\Cloner\VarCloner())->cloneVar($var));
Log::debug(implode(PHP_EOL, $lines));
}
...そしてもちろん、以下を使用してログを監視します。
$ tail -f storage/logs/laravel.log
PHPerror_log()は、単純な値の1回限りの迅速な検査には問題なく機能しますが、上記の関数は、Laravelのより複雑なクラスの一部をデバッグする手間を省きます。
Log::info('This is some useful information.');
STDOUTマジックは、次の方法で実行できます(メッセージの送信先ファイルを設定します)。info
Log::useFiles('php://stdout', 'info');
注意:これは厳密にデバッグ用です。完全に理解していない本番環境では何も使用しないでください。
Artisan::command('mycommand', function () {
echo "\033======== Start ========\n";
});
そして、カラーテキストを変更します。
if (App::environment() === 'production') {
echo "\033[0;33m======== WARNING ========\033[0m\n";
}
$this->info('This will appear in console');
$this->error('This error will appear in console');
$this->line('This line will appear in console);
ドキュメント https://laravel.com/docs/6.x/artisan#writing-output