在 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);
我创建了一个自定义命令。我想用 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);