インポートを行うときに、magento がエラー行をどこかに記録するかどうかを知りたいです。その場合、ログ ファイルはどこにあり、どのように有効にすればよいですか?
5 に答える
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);
4番目のオプションとしての1は完全にオプションであり、管理者でログをオフにするオプションに取って代わり、常にシステムにログへの書き込みを強制します。ロギングのすべてはHTTP_ROOT/var /log/で行われます。
ロギングはデフォルトでオンになっていますが、カスタム拡張機能を使用していてロギングを挿入する必要がある場合は、上記を実行できます。Magentoによるロギングは常にvar/log/exception.logまたはvar/log / system.logにありますが、throwException()を使用するものでない限り、ほとんどのものはsystem.logに送られ、exception.logに送られます。
画面にエラーが存在する場合、エラー行が表示されない製品の直接インポートを使用してください. 製品をインポートするための高速な方法
ログsystem.logファイルとexception.logファイル用に生成されたmagento 2ファイルでは、var/logフォルダーにある両方のファイル
モデルに設定しようとし$_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())