我想知道magento在执行导入时是否记录错误行。 如果是这样,日志文件在哪里,以及如何打开它?
答案 0 :(得分:1)
查看app / Mage.php中的方法定义 你会发现
/**
* log facility (??)
*
* @param string $message
* @param integer $level
* @param string $file
* @param bool $forceLog
*/
public static function log($message, $level = null, $file = '', $forceLog = false)
{
if (!self::getConfig()) {
return;
}
try {
$logActive = self::getStoreConfig('dev/log/active');
if (empty($file)) {
$file = self::getStoreConfig('dev/log/file');
}
}
catch (Exception $e) {
$logActive = true;
}
if (!self::$_isDeveloperMode && !$logActive && !$forceLog) {
return;
}
static $loggers = array();
$level = is_null($level) ? Zend_Log::DEBUG : $level;
$file = empty($file) ? 'system.log' : $file;
try {
if (!isset($loggers[$file])) {
$logDir = self::getBaseDir('var') . DS . 'log';
$logFile = $logDir . DS . $file;
if (!is_dir($logDir)) {
mkdir($logDir);
chmod($logDir, 0777);
}
if (!file_exists($logFile)) {
file_put_contents($logFile, '');
chmod($logFile, 0777);
}
$format = '%timestamp% %priorityName% (%priority%): %message%' . PHP_EOL;
$formatter = new Zend_Log_Formatter_Simple($format);
$writerModel = (string)self::getConfig()->getNode('global/log/core/writer_model');
if (!self::$_app || !$writerModel) {
$writer = new Zend_Log_Writer_Stream($logFile);
}
else {
$writer = new $writerModel($logFile);
}
$writer->setFormatter($formatter);
$loggers[$file] = new Zend_Log($writer);
}
if (is_array($message) || is_object($message)) {
$message = print_r($message, true);
}
$loggers[$file]->log($message, $level);
}
catch (Exception $e) {
}
}
所以记录到你自己的代码,记录变得像
一样简单Mage::log($variable, null, 'yourfile.log', 1);
作为第四个选项的1是完全选项,并取代在管理员中关闭日志记录的选项,并将始终强制系统写入您的日志。记录的所有内容都在HTTP_ROOT / var / log /
中完成默认情况下启用日志记录,但如果您使用自定义扩展并需要插入日志记录,则可以执行上述操作。 Magento的任何日志记录都将始终在var / log / exception.log或var / log / system.log中,但大多数事情都将转到system.log,除非它是使用throwException()的东西,它将转到exception.log
答案 1 :(得分:1)
使用直接导入产品,如果屏幕上存在任何错误,您将看到错误行no。 它快速导入产品的方法
答案 2 :(得分:0)
您可以通过Developer config菜单激活Exception.log文件。
答案 3 :(得分:0)
在magento中为log system.log文件和exception.log文件生成两个文件,您在var / log文件夹中找到该文件
答案 4 :(得分:0)
我尝试在$_debugMode = true
模型中设置Mage_ImportExport_Model_Abstract
,但它并没有在我的案例中创建任何日志。我使用DataFlow方法上传产品。
然后我做的是改变Mage_Adminhtml_System_Convert_ProfileController
一点点。在batchRunAction()
内,它会将错误生成为
try {
$importData = $batchImportModel->getBatchData();
$adapter->saveRow($importData);
} catch (Exception $e) {
$errors[] = $e->getMessage();
continue;
}
我将$errors
数组与当前产品sku一起记录下来以获得我需要的内容,即
Mage::log($importData['sku'].' - '.$e->getMessage())