2012-04-11 3 views
0

Ich würde gerne wissen, wenn Magento die Fehlerzeilen irgendwo bei einem Import protokolliert. Wenn ja, wo sind die Log-Dateien und wie aktiviere ich sie?Magento Import Fehlerprotokolle

Antwort

0

Sie können die Datei "Exception.log" über das Konfigurationsmenü des Entwicklers aktivieren.

0

In magento zwei Datei für Protokoll system.log-Datei generiert und Exception.log beide Datei, die Sie in var finden Datei/log Ordner

1

bei der Methodendefinition Suchen in app/Mage.php Sie

finden
/** 
    * 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) { 
     } 
    } 

so zu Ihrem eigenen Code Protokollierung, Logging so einfach wie

Mage::log($variable, null, 'yourfile.log', 1); 

die 1 als vierte Option th wird Option und ersetzt vollständig Die Option, die Abmeldung im Admin zu deaktivieren und das System immer dazu zu zwingen, in Ihr Protokoll zu schreiben. Alles für die Protokollierung erfolgt in HTTP_ROOT/var/log/

Protokollierung ist standardmäßig aktiviert, aber wenn Sie eine benutzerdefinierte Erweiterung verwenden und Protokollierung einfügen müssen, können Sie das oben tun. Jede Protokollierung durch Magento wird sich immer in var/log/exception.log oder var/log/system.log befinden, aber die meisten Dinge werden in system.log gespeichert, es sei denn, es verwendet throwException(), das zu exception.log

geht
1

Verwenden direkter Import von Produkten Sie Fehler Zeile nicht, wenn ein Fehler auf dem Bildschirm vorhanden ist .. Seine schnelle Methode importieren Produkte

0

ich habe versucht Einstellung $_debugMode = true im Mage_ImportExport_Model_Abstract Modell sehen, aber es nicht schaffte alle Protokolle in mein Fall. Ich habe Produkte mit der DataFlow-Methode hochgeladen.

Dann was ich tat war, um die Mage_Adminhtml_System_Convert_ProfileController ein bisschen zu ändern. Innerhalb batchRunAction() erzeugt er die Fehler als

try { $importData = $batchImportModel->getBatchData(); $adapter->saveRow($importData); } catch (Exception $e) { $errors[] = $e->getMessage(); continue; }

Ich loggte die $errors Array zusammen mit dem aktuellen Produkt sku zu bekommen, was ich brauchte, das heißt, Mage::log($importData['sku'].' - '.$e->getMessage())

Verwandte Themen