モノログに切り替えて、メッセージをファイルではなくPHPコンソールに記録したいと思っていました。これは一部の人にとっては明白に思えるかもしれませんが、方法を理解するのに少し時間がかかりましたそれと私はSOで同様の質問/答えを見つけることができませんでした。
MonologのGithub readme の例は、ファイルの使用方法のみを示しています。
<?php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING)); // <<< uses a file
// add records to the log
$log->addWarning('Foo');
$log->addError('Bar');
ただし、コンソールにメッセージを記録する方法については記載されていません。 Googleで検索した後、Symfonyのヘルプページ、またはブラウザコンソールにログインする方法を探している人々の質問にたどり着きました。
解決策はかなり単純です。この例ではStreamHandler
を示しているため、(ファイルへのパスの代わりに)ストリームを渡すことができます。デフォルトでは、PHP=にエコーされるすべてが php:// stdout/php:// output に書き込まれるため、これらのいずれかを簡単に使用できます。 StreamHandler
のストリーム:
<?php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler('php://stdout', Logger::WARNING)); // <<< uses a stream
// add records to the log
$log->warning('Foo');
$log->error('Bar');
これが誰かの時間を節約することを願っています:)
デフォルトのメッセージフォーマットを同時に微調整する場合の詳細:
use Monolog\Logger;
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\StreamHandler;
$output = "[%datetime%] %channel%.%level_name%: %message%\n";
$formatter = new LineFormatter($output);
$streamHandler = new StreamHandler('php://stdout', Logger::DEBUG);
$streamHandler->setFormatter($formatter);
$logger = new Logger('LoggerName');
$logger->pushHandler($streamHandler);