是否有一个包或一些设置将dump()
函数的输出记录到日志文件(可能是Monolog)而不是在PROD环境中将其显示给用户?
我知道我可以使用VarDumper::setHandler()
创建自己的处理程序,但我相信我不是第一个有这个想法的人......
答案 0 :(得分:2)
使用setHandler是你的答案。执行以下操作:
VarDumper::setHandler(function ($var) use ($app) {
$cloner = new VarCloner();
$dumper = 'cli' === PHP_SAPI ? new CliDumper() : new HtmlDumper();
// you could call monolog here
$dumper->dump($cloner->cloneVar($var));
});
我不太清楚为什么你会这样做。 Monolog在应用程序流程中提供有用的信息。 dump是一个穷人的调试工具。
答案 1 :(得分:1)
完整解决方案(适用于Silex):
use Symfony\Component\VarDumper\Cloner\VarCloner;
use Symfony\Component\VarDumper\Dumper\CliDumper;
use Symfony\Component\VarDumper\VarDumper;
$monologHandler = function($var) use ($app) {
$cloner = new VarCloner();
$dumper = new CliDumper();
$output = '';
$dumper->dump(
$cloner->cloneVar($var),
function ($line, $depth) use (&$output) {
// A negative depth means "end of dump"
if ($depth >= 0) {
// Adds a two spaces indentation to the line
$output .= str_repeat(' ', $depth).$line."\n";
}
}
);
$app['monolog']->addNotice($output); //you can change this to addInfo, addDebug or what you prefer
};
VarDumper::setHandler($monologHandler);