在 monolog 中使用 Symfony 命令

Symfony Command tapped in monolog

我创建了一个自定义命令。我想用 monolog 记录用户使用参数和选项点击的命令

例如:php bin/console app:my_command argument1 --option=1234

现在我有了:

        $this->log->error('error on command', array(
            'command_tapped_by_user' => '????',
            'command' => $this->getName(),
            'arguments' => $input->getArguments(),
            'options' => $input->getOptions(),
            'exception' => $e->getMessage()
        ));

谢谢

传递给 PHP 脚本的所有参数都在 $argv 数组中可用,其中第一个元素是脚本名称。它不是 "superglobal" 数组,在 Symfony 命令(或任何其他函数或方法)中,它可作为 $GLOBALS 的元素或通过 global 关键字使用。原始命令被空白字符分割。要恢复它,您应该加入他们:

echo join(' ', $GLOBALS['argv']);

此外,如果您不担心 OS 依赖性(并且如果您不墨守成规),则可以使用系统工具。例如在 Linux 环境中,当前命令行存储在 /proc/$PID/cmdline:

$pid = getmypid();
$cmd = file_get_contents("/proc/$pid/cmdline");
// Arguments are splitted by NULL bytes that we replace by space character:
echo str_replace("[=11=]", " ", $cmd);