Seperti yang lain, file log saya benar-benar berhenti menulis data.
Sumber Bug - File Log Tidak Menulis Data
Di app/Mage.php
mereka membuat perubahan ini:
// Validate file extension before save. Allowed file extensions: log, txt, html, csv
- if (!self::helper('log')->isLogFileExtensionValid($file)) {
+ $_allowedFileExtensions = explode(
+ ',',
+ (string) self::getConfig()->getNode('dev/log/allowedFileExtensions', Mage_Core_Model_Store::DEFAULT_CODE)
+ );
+ $logValidator = new Zend_Validate_File_Extension($_allowedFileExtensions);
+ $logDir = self::getBaseDir('var') . DS . 'log';
+ if (!$logValidator->isValid($logDir . DS . $file)) {
return;
}
yang mencari konfigurasi untuk daftar ekstensi file yang disetujui koma yang terpisah. Namun mereka TIDAK menambahkan daftar ini di konfigurasi - bahkan bukan opsi di Admin Mage untuk kita konfigurasikan sendiri.
Solusi untuk Bug - File Log Tidak Menulis Data
Untuk mengatasi ini, cukup buat entri ke dalam database di core_config_data
tabel.
INSERT INTO core_config_data VALUES ( NULL, 'default', 0, 'dev/log/allowedFileExtensions', 'log,txt,html,csv' );
Bersihkan cache objek juga dan Anda akan melihat data menulis ke file log sekali lagi.
ls -lrt var/log/ | tail
Untuk referensi, masalah ini pada EE 1.14.2.0 dengan semua tambalan keamanan diterapkan.
Saya memang membuka tiket dengan Dukungan Magento tentang masalah ini tetapi belum menerima tanggapan dari teknisi. Saya dalam antrian.
Yang benar-benar membingungkan saya tentang bug ini adalah Magento sudah memiliki metode untuk memvalidasi ekstensi file log yang mereka tambahkan melalui SUPEE-10415 pada akhir 2017.
app/code/core/Mage/Log/Helper/Data.php
/**
* Checking if file extensions is allowed. If passed then return true.
*
* @param $file
* @return bool
*/
public function isLogFileExtensionValid($file)
{
$result = false;
$validatedFileExtension = pathinfo($file, PATHINFO_EXTENSION);
if ($validatedFileExtension && in_array($validatedFileExtension, $this->_allowedFileExtensions)) {
$result = true;
}
return $result;
}
Mengapa mereka tidak menggunakan kembali logika itu alih-alih mencoba menemukan kembali roda log yang tidak lengkap?