Magento日志打印数组内容

5

Mage::log在我这里工作良好,但是当涉及到打印数组信息时出现问题。

例如,如果我有一个数组 $result,并执行以下操作:

Mage::log('[CartController: getDeliverLeadTime(country): ' . $result . ')');

在我的 system.log 文件中,我只得到: [CartController: getDeliverLeadTime~(country): Array)

*我希望它像普通的 print_r 一样打印数组的实际结构和内容。*

如果我对数组进行 var_dump,我什么也看不到,即 [CartController: getDeliverLeadTime~(country): )。

如果我使用 print_r,我会得到:

[CartController: getDeliverLeadTime~(country): 1)

这对我来说是个障碍,因为我无法调试所需的内容-如果有人能够解释如何使 Magento 实际在日志中打印数组的内容,将不胜感激。

我在 alanstorm.com 上读到默认情况下应该发生这种情况,但对我来说并非如此。

谢谢 保罗

3个回答

14
你需要将 print_r 作为字符串返回,因此使用 print_r($result, true) 即可。

Max非常感谢你的帮助!它完美地运行了,这是一个巨大的解脱。我可以在7分钟内将问题标记为已回答,到时候会这样做。再次感谢,保罗。 - pokero
@pokero 如果这个回答对你有帮助,请不要忘记点赞并接受它。 - Anton S
很不错,可以将print_r日志记录到您的自定义Magento日志文件中。 - Fiasco Labs
哎呀,这应该很简单,但是却让我困扰了很久。不过修复起来很容易。 - Bosworth99

2

试试看

$array = array('ID' => 1, 'NAME' => 'Amaresh', 'EMAIL' => 'example@gmail.com');

Mage::log($array);

输出

2015-09-18T06:44:24+00:00 DEBUG (7): Array
(
    [ID] => 1
    [NAME] => Amaresh
    [EMAIL] => example@gmail.com
)

0

看一下下面的代码:

$collection = Mage::getModel('catalog/product')->getCollection()
Mage::log("Query product: ".print_r($collection->getData(), true),null,'test.log');

检查 var/log 文件夹中的 test.log 文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接