Prestashop LOG:获取对象和数组的DUMP

时间:2017-10-29 16:54:17

标签: prestashop symfony-2.8 prestashop-1.7

我正在弄清楚Prestashop 1.7是如何运作的,而且我对Symfony有一些经验。

在Symfony开发模式[Symfony project url]/_profiler中,检查请求中的dump($someVariable)变量非常有用。

使用管理员模式中的Prestashop 1.7,可以[Prestashop project url]/admin[some random chain of chars]/_profiler显示Symfony _profiler并分析有关管理模式的请求中发生的情况。< / p>

但如果在管理模式之外(在虚拟商店演示模式中),[Prestashop project url]/_profiler[Prestashop project url]/[language value]/_profiler 不会显示Symfony _profiler < /强>

我通过激活define('_PS_DEBUG_PROFILING_', true);中的[prestashop project]/config/defines.inc.php尝试了Prestashop自己的探查器。它在“虚拟商店演示模式”的底部显示Prestashop探查器,但是这个不包括dump($someVariable),可用于开发和理解Prestashop行为,hookAction[action name]

我设法通过生成的HTML生成了dump($someVariable) hookDisplay[display name],而不是hookAction[action name] ,这是我正在寻找的。

更新 看看Prestashop 1.7代码,我几乎感觉到Symfony只在Admin端使用,因为我可以看到: $kernel = new AppKernel(_PS_MODE_DEV_?'dev':'prod', _PS_MODE_DEV_);中的[Prestashop project url]/admin[some random chain of chars]/index.php,但我在[Prestashop project url]/index.php中没有看到。

1 个答案:

答案 0 :(得分:0)

我到目前为止找到的最佳解决方案是创建一个类似于explained here的自定义记录器

我已创建文件:[Prestashop project]/modules/[my module]/classes/CustomLogger.php

<?php
class CustomLogger {
    const DEFAULT_LOG_FILE ="prestashop_system.log";
    public static function log($message, $level = 'debug', $fileName = null){
        $fileDir = _PS_ROOT_DIR_ . '/log/';
        $fileName=self::DEFAULT_LOG_FILE;
        if(is_array($message) || is_object($message)){$message = print_r($message, true);}
        $formatted_message=$level." -- ".date('Y/m/d - H:i:s').": ".$message."\r\n";
        return file_put_contents($fileDir . $fileName, $formatted_message, FILE_APPEND);
    }
}
?>

在&#39; [Prestashop项目] / modules / [我的模块] / [我的模块] .php&#39;它被声明在顶部: include_once dirname(__FILE__).'/classes/CustomLogger.php';

在代码中使用CustomLogger::log($[some variable]);