Dans Magento 1, si vous vouliez envoyer un message aux journaux, vous utiliseriez une méthode statique sur la Mage
classe globale .
Mage::log($message, Zend_Log::DEBUG, "my-log-file.log");
Existe-t-il un équivalent dans Magento 2? J'ai consulté Google sur le site des documents de développement et je n'ai encore rien vu d'évident. Il y a cet article Inchoo , mais il y a presque un an et tant de choses ont changé depuis.
En tant que développeur de module Magento 2, si je veux remplacer le code suivant dans Magento 1
Mage::log($message, Zend_Log::DEBUG, "my-log-file.log");
Quel est le minimum que je dois faire?
magento2
log
psr-logger
Alan Storm
la source
la source
Dans magento2, vous pouvez également écrire dans les journaux à l'aide de la
Zend
bibliothèque, comme ci-dessous:Édité
Vous pouvez également imprimer des objets et des tableaux PHP comme ci-dessous:
la source
PHP objects
pas ...la source
Vous devez injecter la classe \ Psr \ Log \ LoggerInterface dans le constructeur pour appeler un objet logger.
Pour imprimer la chaîne Sortie dans le fichier debug.log
Pour imprimer un tableau Sortie dans system.log
la source
Si vous souhaitez utiliser le consignateur par défaut mais le fichier personnalisé pour la consignation (ou toute autre logique personnalisée), vous devez utiliser le gestionnaire de consignateur personnalisé:
Puis ajoutez-le en tant que gestionnaire quelque part dans votre code:
Un pas en arrière dans le confort IMO
la source
$this->logger->info($message, $level);
, comment dites-vous "utiliser mon contexte"?De manière simple, si vous ne voulez pas créer d'injection de dépendance ou utiliser quoi que ce soit d'autre, le code ci-dessous stockera le journal dans le
system.log
fichierC'est tout..
la source
Non, il n'y a pas d'équivalent direct. C'est un peu compliqué maintenant.
Voir: Connexion à un fichier personnalisé dans Magento 2
la source
Incluez la classe psr logger dans votre fichier à l'aide de la méthode use puis call
addDebug()
. Ceci imprimera le message de log dans levar/log/debug.log
fichierla source
MISE À JOUR: 19/08/2019
Si vous recherchez un gestionnaire de journaux élégant et personnalisé, je vous recommande d'utiliser des types virtuels (qui n'ont pas besoin d'ajouter de code PHP)
Inspirés de la réponse de Petar Dzhambazov et de halk , Mesdames et Messieurs, je vous ai présenté un moyen plus efficace et plus court au lieu de dupliquer le code de journal personnalisé en permanence.
USAGE
C'est tout, pas de fichiers PHP ni de lignes supplémentaires - utilisez les avantages de Magento 2: Types virtuels !!!
J'espère que cela t'aides ;)
la source
Il y a une mise à jour pour l'enregistreur dans la version 2.2. Vous pouvez activer le consignateur pour le mode de production en exécutant SQL:
Ensuite, vous pouvez utiliser
\Psr\Log\LoggerInterface
pour le journal d'impression comme dans les réponses ci-dessus:la source
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.
Injecter la
$logger
classe dans le constructeur\Psr\Log\LoggerInterface $logger
Ceci est réalisé en passant $ logger en argument.
Initialiser
$logger
dans le constructeurEn fonction dans la classe que vous souhaitez enregistrer, utilisez la ligne ci-dessous
la source
Si vous en avez besoin dans votre classe unique avec un fichier journal personnalisé:
la source
Placez le code de l'enregistreur PSR dans votre constructeur:
alors vous pouvez utiliser dans votre fonction comme:
la source