カスタム コマンドを作成していますが、別のログ ファイルを使用したいと考えています。
ドキュメントには、サービスにタグを付ける必要があると書かれています。しかし、私のカスタム コマンドはサービスではありませんね。サービスにすべきか?
2 番目のドキュメントは、カスタム ロガーを作成する場合のためのものです。しかし、ログが保存されているファイルを変更したいだけの場合は、その必要はありません。モノログの「パス」構成を設定するだけで済みます。詳細については、これを参照してください
また、get('logger') 時に取得するオブジェクトは、クラス Monolog\Logger から派生しています。このクラスには、ハンドラーをハンドラー スタックに追加する pushHandler() と、ハンドラー スタックからハンドラーを削除する popHandler() の 2 つのメソッドがあります。おそらく、コマンドですべての標準ハンドラーをポップしてから、カスタム パスを使用して Monolog\Handler\StreamHandler のインスタンスをプッシュできます。
最初に NullHandler をプッシュして、他のハンドラーを無効にしました。次に、情報メッセージ用のハンドラーを 1 つ追加し、すべてのメッセージ用に別のハンドラーを追加しました。これは、警告、エラーなどがある場合にのみトリガーされます。
$logger = $this->getContainer()->get('logger');
$logger->pushHandler(new NullHandler);
$logger->pushHandler(new StreamHandler('app/logs/mycommand.log', Logger::DEBUG));
//$logger->pushHandler(new FingersCrossedHandler(new StreamHandler('app/logs/mycommand.log', Logger::DEBUG), Logger::WARNING, 0, false)); // does not work. It prevents INFO messages from being logged