Di Magento 1, jika Anda ingin mengirim pesan ke log, Anda akan menggunakan metode statis di Mage
kelas global .
Mage::log($message, Zend_Log::DEBUG, "my-log-file.log");
Apakah ada yang setara di Magento 2? Saya sudah mencari Google melalui situs docs dan belum melihat sesuatu yang jelas yang muncul. Ada artikel Inchoo ini, tapi sudah hampir setahun yang lalu dan sudah banyak yang berubah sejak saat itu.
Sebagai pengembang modul Magento 2, jika saya ingin mengganti kode seperti berikut ini di Magento 1
Mage::log($message, Zend_Log::DEBUG, "my-log-file.log");
Apa minimum yang harus saya lakukan?
magento2
log
psr-logger
Alan Storm
sumber
sumber
Di magento2, Anda juga dapat menulis ke log menggunakan
Zend
perpustakaan seperti di bawah ini:Diedit
Anda juga dapat mencetak objek dan array PHP seperti di bawah ini:
sumber
PHP objects
tidak mencetak ...sumber
Anda perlu menyuntikkan kelas \ Psr \ Log \ LoggerInterface ke konstruktor untuk memanggil objek logger
Untuk mencetak string Output di debug.log
Untuk mencetak Output array di system.log
sumber
Jika Anda ingin menggunakan logger default tetapi file kustom untuk logging (atau logika kustom lainnya), Anda perlu menggunakan handler logger kustom:
Kemudian tambahkan itu sebagai penangan di suatu tempat di dalam kode Anda:
Langkah mundur dalam kenyamanan IMO
sumber
$this->logger->info($message, $level);
- bagaimana Anda mengatakan "gunakan konteks saya"?Dengan cara sederhana jika Anda tidak ingin membuat injeksi ketergantungan atau hal lain yang menggunakan kode di bawah ini akan menyimpan
system.log
file loginItu saja..
sumber
Tidak, tidak ada padanan langsung. Agak rumit sekarang.
Lihat: Masuk ke file khusus di Magento 2
sumber
Sertakan kelas psr logger di file Anda menggunakan use dan kemudian panggil
addDebug()
metode. Ini akan mencetak pesan log dalamvar/log/debug.log
filesumber
DIPERBARUI: 19/08/2019
Jika Anda mencari penangan log kustom yang elegan, saya sarankan Anda menggunakan Jenis Virtual (yang tidak perlu menambahkan kode PHP)
Terinspirasi dari jawaban Petar Dzhambazov dan halk , hadirin yang saya perkenalkan kepada Anda dengan cara yang lebih baik dan lebih pendek daripada selalu menggandakan kode log kustom.
PEMAKAIAN
Itu saja, tidak ada file atau baris PHP tambahan - gunakan keunggulan Magento 2: Jenis Virtual !!!
Semoga ini membantu ;)
sumber
Ada satu pembaruan untuk logger di 2.2. Anda dapat mengaktifkan logger untuk mode produksi dengan menjalankan SQL:
Kemudian Anda dapat menggunakan
\Psr\Log\LoggerInterface
untuk log cetak seperti jawaban di atas:sumber
In the Magento admin panel, go to "Stores" -> "Configuration" -> "Advanced" -> "Developer" -> "Debug" -> "Log to File". Setting this to "Yes" will cause debug information to be logged to var/log/debug.log in your Magento application directory.
Inject
$logger
class in constructor\Psr\Log\LoggerInterface $logger
Ini dicapai dengan melewatkan $ logger sebagai argumen.
Inisialisasi
$logger
dalam konstruktorBerfungsi dalam kelas yang ingin Anda masuki, gunakan baris di bawah ini
sumber
Jika Anda membutuhkannya dalam satu kelas dengan file log khusus:
sumber
Tempatkan kode logger PSR di konstruktor Anda:
maka Anda dapat menggunakan fungsi Anda seperti:
sumber