2017-12-19 19 views
0

私はJMose's Command Scheduler Bundleを使用してプロジェクトを作成しており、cronjobマネージャを作成しています。 cronjob Managerは私自身のカスタムSymfonyコマンドを処理します:ソースsymfonyオーバーライドコマンドクラスをサードパーティのバンドルから

問題は、このレポがコマンドコンソールで例外とスローエラーを処理していることです。これは例外メッセージが出力されるために$ e-> getLine()メソッドが含まれていれば非常にきれいです。それを作り出したライン。 下のコードを見ることができます。

try { 
     $output->writeln('<info>Execute</info> : <comment>' . $scheduledCommand->getCommand() 
      . ' ' . $scheduledCommand->getArguments() . '</comment>'); 
     $result = $command->run($input, $logOutput); 
    } catch (\Exception $e) { 
     $logOutput->writeln($e->getMessage()); 
     $logOutput->writeln($e->getTraceAsString()); 
     $result = -1; 
    } 

私が望むのは、そのコード行を追加するために彼のクラスをオーバーライドすることです。私は運が無ければそれを試みました、そして、私はSymfonyドキュメンテーションサイトで助けを見つけることができませんでした。

私の現在のプロジェクト構造は、次のようなものです。クラスExecuteCommandは、オーバーライドするクラスであるため、強調表示しています。

enter image description here

答えて

1

ラン冗長モードでコマンド:

php bin/console parse:source -v 

のSymfonyコンソールイベントを使用します。 https://symfony.com/doc/3.4/components/console/events.html

と呼ばれるイベントがあります:あなたは任意のコマンドをキャッチすることができますEXCEPTIONまたはconsole.exceptionは、例外。

+0

こんにちは、問題は例外がすでにJMose Bundleによって処理されていることです。さらに、Console Eventsで例外を処理することは望ましくありません。例外がJMoseによって処理されるように、コマンド実行のために作成されたcronlogファイルに書き込むことができます。 – marioskamperis

関連する問題