Wenn Sie in Magento 1 eine Nachricht an die Protokolle senden möchten, verwenden Sie eine statische Methode für die globale Mage
Klasse.
Mage::log($message, Zend_Log::DEBUG, "my-log-file.log");
Gibt es in Magento 2 ein Äquivalent? Ich habe die Seite mit den Entwicklerdokumenten durchgegoogelt und keine offensichtlichen Probleme festgestellt. Es gibt diesen Inchoo- Artikel, aber er ist fast ein Jahr her und seitdem hat sich so viel geändert.
Wenn ich als Magento 2-Modulentwickler Code wie den folgenden in Magento 1 ersetzen möchte
Mage::log($message, Zend_Log::DEBUG, "my-log-file.log");
Was ist das Nötigste, was ich tun muss?
magento2
log
psr-logger
Alan Storm
quelle
quelle
In magento2 können Sie auch mithilfe der folgenden
Zend
Bibliothek in die Protokolle schreiben :Bearbeitet
Sie können auch PHP-Objekte und -Arrays wie folgt drucken:
quelle
PHP objects
werden nicht gedruckt ...quelle
Sie müssen die Klasse \ Psr \ Log \ LoggerInterface in den Konstruktor einfügen , um das Logger-Objekt aufzurufen
So drucken Sie die Zeichenfolge Ausgabe in debug.log
So drucken Sie die Array-Ausgabe in system.log
quelle
Wenn Sie den Standard-Logger, aber eine benutzerdefinierte Datei für die Protokollierung (oder eine andere benutzerdefinierte Logik) verwenden möchten, müssen Sie den benutzerdefinierten Logger-Handler verwenden:
Fügen Sie es dann als Handler irgendwo in Ihrem Code hinzu:
Ein Schritt zurück in die Praxis IMO
quelle
$this->logger->info($message, $level);
- wie sagt man „meinen Kontext verwenden“?Auf einfache Weise wird die Anmeldedatei
system.log
gespeichert , wenn Sie keine Abhängigkeitsinjektion erstellen möchten oder wenn Sie den folgenden Code verwendenDas ist alles..
quelle
Nein, es gibt kein direktes Äquivalent. Es ist jetzt ein bisschen kompliziert.
Siehe: Protokollieren in eine benutzerdefinierte Datei in Magento 2
quelle
Fügen Sie die Klasse psr logger mit use in Ihre Datei ein und rufen Sie dann
addDebug()
method auf. Dadurch wird die Protokollmeldung in dervar/log/debug.log
Datei gedrucktquelle
AKTUALISIERT: 19/08/2019
Wenn Sie nach einem eleganten benutzerdefinierten Protokollhandler suchen, empfehle ich die Verwendung von virtuellen Typen (für die kein PHP-Code hinzugefügt werden muss).
Inspiriert von der Antwort von Petar Dzhambazov und Halk , meine Damen und Herren, habe ich Ihnen immer einen besseren und kürzeren Weg vorgestellt, anstatt den benutzerdefinierten Protokollcode zu duplizieren.
VERWENDUNGSZWECK
Das ist alles, keine zusätzlichen PHP-Dateien oder -Linien - nutzen Sie die Vorteile von Magento 2: Virtual Types !!!
Hoffe das hilft ;)
quelle
Es gibt ein Update für Logger in 2.2. Sie können den Logger für den Produktionsmodus aktivieren, indem Sie SQL ausführen:
Dann können Sie das
\Psr\Log\LoggerInterface
Protokoll wie oben beschrieben ausdrucken:quelle
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
Dies wird durch die Übergabe von $ logger als Argument erreicht.
$logger
Im Konstruktor initialisierenVerwenden Sie in der Funktion innerhalb der Klasse, die Sie protokollieren möchten, die folgende Zeile
quelle
Wenn Sie es in Ihrer einzelnen Klasse mit einer benutzerdefinierten Protokolldatei benötigen:
quelle
Platzieren Sie den PSR-Logger-Code in Ihrem Konstruktor:
dann kannst du in deiner funktion verwenden wie:
quelle