PHP:将bash命令的输出重定向到默认记录器

时间:2016-04-22 17:38:42

标签: php bash logging stream exec

我在控制台中有一个类执行命令。此类定义为LoggerInterface定义的@logger.handler

我想在bash中执行命令,但是:

  • 我不想在默认流
  • 中显示结果
  • 我想将结果放在默认日志文件中(由$ logger定义),例如应用程序/日志/ application.log

这个类的主要方法如下:

$command = $command . " > 2>&1";
$returnVal = null;
$output = [];
exec($command, $output, $returnVal);
$this->logger->debug($output);

我添加了> 2>&1在当前流中没有显示任何内容,因为我不知道如何从$ output中获取app/log/application.log ...

问题是我的app / config / application.log中没有任何内容!

你知道我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

由于> 2>&1

,您未在输出中捕获任何内容
//$command = $command . " > 2>&1";
$returnVal = null;
$output = [];
exec($command, $output, $returnVal);
for ($i=0;$i<count($output);$i++)
    $this->logger->debug($output[$i]);

如果调试器为每个时间戳创建多个时间戳并且它不是所需的输出,那么使用它:

$returnVal = null;
$output = [];
exec($command, $output, $returnVal);
$result=""
for ($i=0;$i<count($output);$i++)
    $result.=$output[i]."\n";
$this->logger->debug($result);