2015-07-03 65 views
0

我正在通過ConsoleOuput打印一些行。我喜歡用表助手,但其採用默認的標準輸出和這似乎是硬編碼,如\Symfony/Component/Console/Output/ConsoleOutput.php,它說:在哪裏更改Symfony2 ConsoleOutput的輸出?

* This class is a convenient wrapper around `StreamOutput`. 
* 
*  $output = new ConsoleOutput(); 
* 
* This is equivalent to: 
* 
*  $output = new StreamOutput(fopen('php://stdout', 'w')); 

在我們Log4Php項目,並把它存儲到一個文件通過將stdout的默認輸出更改爲自定義輸出。

是否有方法將ConsoleOutput的輸出更改爲sdtout以外的其他內容?

因爲截至目前,我可以在StdOut的命令行中看到輸出,但是當php4log輸出重定向到文件時,ConsoleOutput仍將處於StdOut中。

如何合併這些輸出?

回答

1

使用BufferedOutput()而不是ConsoleOutput()。它將存儲消息,然後您可以使用任何您想要的消息。使用$output->fetch()方法以字符串形式獲取消息。該字符串包含之前在OutputInterface上執行的所有寫入操作,方法調用也將清空緩衝區。

如果你需要使用它在不同的記錄器,在你的情況下,log4php例如,它看起來是這樣的:

$this->getLog4PhpLogger() 
    ->info(
     $this->output->fetch() 
    );