我正在使用magento。它一直在magento / var / report文件夹中生成错误报告文件。
它不是单个日志文件,而是每天生成数千个文件
magento有什么方法可以关闭这个功能吗?
答案 0 :(得分:4)
(我目前没有安装1.4.0.1,但我认为这一切都大致相同)
没有配置设置。您需要自定义代码才能实现这一目标(假设政治/能力/预算阻止了明显的解决方案,即解决错误)。
当一段Magento代码调用
时会生成这些错误Mage::printException($e);
此方法最终是require
文件中的report.php
。
public static function printException(Exception $e, $extra = '')
{
//...snip...
require_once(self::getBaseDir() . DS . 'errors' . DS . 'report.php');
}
和report.php
包含以下内容
#File: errors/report.php
require_once 'processor.php';
$processor = new Error_Processor();
if (isset($reportData) && is_array($reportData)) {
$processor->saveReport($reportData);
}
$processor->processReport();
这是对saveReport
的调用,它会保存令你烦恼的文件
public function saveReport($reportData)
{
$this->reportData = $reportData;
$this->reportId = abs(intval(microtime(true) * rand(100, 1000)));
$this->_reportFile = $this->_reportDir . '/' . $this->reportId;
//...snip...
@file_put_contents($this->_reportFile, serialize($reportData));
//...snip...
}
这个执行链中没有任何地方(即使在剪切的代码中,我保证)是否有条件代码在写入文件或调用printException
之前检查配置。这意味着实现您想要的唯一方法是手动修改文件。
如何这取决于你,如果是我,我会发表评论file_put_contents
。
#@file_put_contents($this->_reportFile, serialize($reportData));
这是单行更改,但以其他方式维护商店的现有行为。
所有这一切 - 真正的解决方案是修复错误。
答案 1 :(得分:0)
错误报告是一种有价值的工具,通过禁用它,您将从开发人员工具包中删除一个非常有用的资源。我会尝试修复报告的错误,而不是自己隐藏日志。
也就是说,您可以通过以下两种方式之一禁用此错误报告。我推荐第一个,但是如果你在生产环境中,你可能不希望向每个人显示错误消息。
启用开发者模式。这会将错误消息放在页面上,并且不会生成var / report中的文件。有几种方法可以做到这一点,这里有一个:
// In index.php, after Magento is loaded but before Mage::run();
Mage::setIsDeveloperMode(true);
修改var / report的权限,以便Web服务器用户(www-data,apache,具体取决于您的设置)没有写入权限。
# If the directory is not owned by www-data this is sufficient, otherwise
# change go-w to a-w
$ chmod go-w var/report
答案 2 :(得分:0)
添加以下行
require_once MAGENTO_ROOT。 DS。 '错误'。 DS。 'report.php';
$ x = $ y + $ z;
行后
require_once $ mageFilename;
在index.php页面中,这将强制错误显示在report.php
中答案 3 :(得分:-1)
这是您需要做的,请转到:System -> Configuration -> Advanced - > Developer -> Log Settings -> Enabled = 'No'
。
如果您要引用日志表,则需要添加一个可以清除它的cron。我可以给你更多细节,如果是这样,请告诉我。