0

I would like to know if magento logs the error rows anywhere when doing an import. If so, where are the logs files, and how do I turn it on?

4

5 回答 5

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

于 2012-04-11T23:16:34.403 回答
1

使用直接导入产品,如果屏幕上存在任何错误,您将看到错误行没有.. 其快速导入产品的方法

于 2012-04-13T10:55:20.010 回答
0

您可以通过开发人员配置菜单激活 Exception.log 文件。

于 2012-04-11T15:29:40.367 回答
0

在 magento 中为日志 system.log 文件和 exception.log 文件生成了两个文件,这两个文件都位于 var/log 文件夹中

于 2012-04-11T15:37:20.743 回答
0

我尝试$_debugMode = trueMage_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())

于 2015-11-15T12:39:19.837 回答