【问题标题】:Log VarDumper output to logs instead displaying it in prod environment将 VarDumper 输出记录到日志,而不是在 prod 环境中显示
【发布时间】:2015-08-10 13:13:59
【问题描述】:

是否有捆绑或某些设置将dump() 函数的输出记录到日志文件(可能使用 Monolog)而不是在 PROD 环境中向用户显示?

我知道我可以用VarDumper::setHandler() 制作自己的处理程序,但我相信我不是第一个有这个想法的人......

【问题讨论】:

    标签: symfony silex monolog


    【解决方案1】:

    使用 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 是穷人的调试工具。

    【讨论】:

    • 我在开发环境中使用dump()而不是var_dump()来输出一些调试信息,我也想在日志中看到这些信息。
    • 试试上面的方法,虽然我不同意这种方法。您可以创建一个名为 dump 的 dump2 命令,也可以是独白... function dump2($var) use ($app) { dump($var); $app['monolog']->addInfo(var_export($var, true)); }
    • 有时您在进行 AJAX 调用时无法dump() 向站点发送内容,因此需要查看开发日志中发生的情况。页面未加载时看不到 HTML,DeveloperBar 也无法捕获。
    【解决方案2】:

    完整解决方案(针对 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-19
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      相关资源
      最近更新 更多