Um die Monolog-Logs in der Symfony-Konsole anzuzeigen, können Sie Folgendes tun:
- Sie müssen zuerst sicherstellen, dass Monolog so konfiguriert ist, dass es auf der Konsole loggt. Dazu müssen Sie die
config/packages/dev/monolog.yaml
-Datei bearbeiten und sicherstellen, dass eine Stream-Handler-Konfiguration für die Konsole vorhanden ist.
monolog: handlers: console: type: stream path: "php://stdout" level: debug channels: ["!event"]
- Es empfiehlt ich auch beim ausführen der Tests den Consolen Logger zu aktivieren in
config/packages/test/monolog.yaml
. Damit erhält man wertvolle Loginformationen beim Ausführen seiner Tests.
- In Ihrem Konsolenbefehl können Sie dann das Logger-Interface injizieren und verwenden, um Meldungen zu loggen. Hier ist ein einfacher Konsolenbefehl, der dies demonstriert:
namespace App\Command; use Psr\Log\LoggerInterface; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; class YourCommand extends Command { private $logger; public function __construct(LoggerInterface $logger) { $this->logger = $logger; parent::__construct(); } protected function configure() { $this ->setName('app:your-command') ->setDescription('Description of your command.'); } protected function execute(InputInterface $input, OutputInterface $output) { $this->logger->info('This is an info log entry.'); // ... return Command::SUCCESS; } }
- Starten Sie dann Ihren Befehl von der Konsole aus, und Sie sollten die Protokolle auf der Konsole sehen:
$ php bin/console app:your-command
[2023-06-02T12:34:56.789Z] info: This is an info log entry.
Bitte beachten Sie, dass die obige Konfiguration die Logs auf allen Kanälen außer „event“ auf „php://stdout“ ausgibt. Sie können die Kanäle an Ihre Bedürfnisse anpassen.
Ebenfalls beachten Sie bitte, dass die Protokolle nur ausgegeben werden, wenn der Log-Level Ihrer Meldung dem in der Monolog-Konfiguration festgelegten Level entspricht oder darüber liegt. Im obigen Beispiel wird alles auf „debug“-Level und darüber protokolliert.