Magento在system.log中添加调试跟踪?

时间:2016-03-27 14:50:26

标签: php magento debugging warnings

此错误不断填写system.log:

2016-03-27T13:59:10+00:00 ERR (3): Warning: simplexml_load_string(): Entity: line 12: parser error : Premature end of data in tag config line 2  in /home/xxxx/public_html/lib/Varien/Simplexml/Config.php on line 510

每隔几分钟或几个小时。为了找到罪魁祸首,我尝试在Config.php中添加它:

file_put_contents('/home/xxxx/public_html/xml_errors/'.sha1(microtime(true)).'.txt', $string . PHP_EOL . '=====' . PHP_EOL . print_r(debug_backtrace(), true));

在Config.php的510行之前:

$xml = simplexml_load_string($string, $this->_elementClass);

由于我的商店非常繁忙,而且我仍然不知道如何查明实际引发警告的$string,因此非常快速地每秒创建5到10个文件。

如何自定义system.log以提供警告的调试跟踪,以便跟踪传递给Config.php的xml字符串的实际来源?

或者非常感谢任何其他建议找到无效XML的来源!

1 个答案:

答案 0 :(得分:0)

我能够通过添加有问题的行来追溯:

if (ch == smth)

像这样:

$xml = simplexml_load_string($string, $this->_elementClass);

然后在Config.php文件的末尾添加一个独立的函数:

set_error_handler("warning_handler", E_WARNING);
$xml = simplexml_load_string($string, $this->_elementClass);
restore_error_handler();

您当然必须手动创建文件夹xml_errors。