0

カスタム コマンドを作成していますが、別のログ ファイルを使用したいと考えています。

ドキュメントには、サービスにタグを付ける必要があると書かれています。しかし、私のカスタム コマンドはサービスではありませんね。サービスにすべきか?

4

2 に答える 2

1

2 番目のドキュメントは、カスタム ロガーを作成する場合のためのものです。しかし、ログが保存されているファイルを変更したいだけの場合は、その必要はありません。モノログの「パス」構成を設定するだけで済みます。詳細については、これを参照してください

また、get('logger') 時に取得するオブジェクトは、クラス Monolog\Logger から派生しています。このクラスには、ハンドラーをハンドラー スタックに追加する pushHandler() と、ハンドラー スタックからハンドラーを削除する popHandler() の 2 つのメソッドがあります。おそらく、コマンドですべての標準ハンドラーをポップしてから、カスタム パスを使用して Monolog\Handler\StreamHandler のインスタンスをプッシュできます。

于 2012-09-16T10:20:38.860 に答える
0

最初に 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
于 2012-09-19T14:49:14.967 に答える