En Magento 1, si quisiera enviar un mensaje a los registros, utilizaría un método estático en la Mage
clase global .
Mage::log($message, Zend_Log::DEBUG, "my-log-file.log");
¿Hay un equivalente en Magento 2? He buscado en Google el sitio de documentos de desarrollo y no he visto nada obvio que salga a la luz. Existe este artículo de Inchoo , pero es de hace casi un año y mucho ha cambiado desde entonces.
Como desarrollador de módulos de Magento 2, si quiero reemplazar un código como el siguiente en Magento 1
Mage::log($message, Zend_Log::DEBUG, "my-log-file.log");
¿Qué es lo mínimo que necesito hacer?
magento2
log
psr-logger
Alan Storm
fuente
fuente
En magento2, también puede escribir en los registros utilizando la
Zend
biblioteca como se muestra a continuación:Editado
También puede imprimir objetos PHP y matrices como a continuación:
fuente
PHP objects
no están imprimiendo ...fuente
Es necesario inyectar \ Psr \ Log \ LoggerInterface clase en el constructor para llamar objeto registrador
Para imprimir la salida de cadena en debug.log
Para imprimir la salida de la matriz en system.log
fuente
Si desea utilizar el registrador predeterminado pero el archivo personalizado para el registro (u otra lógica personalizada), debe usar el controlador de registrador personalizado:
Luego agréguelo como controlador en algún lugar dentro de su código:
Un paso atrás en conveniencia IMO
fuente
$this->logger->info($message, $level);
, ¿cómo dice "usar mi contexto"?De una manera simple, si no desea crear una inyección de dependencia o cualquier otra cosa que use el código siguiente, almacenará el
system.log
archivo de registroEso es todo..
fuente
No, no hay equivalente directo. Es un poco complicado ahora.
Ver: Iniciar sesión en un archivo personalizado en Magento 2
fuente
Incluya la clase psr logger en su archivo usando use y luego llame al
addDebug()
método. Esto imprimirá el mensaje de registro en elvar/log/debug.log
archivofuente
ACTUALIZADO: 19/08/2019
Si está buscando un elegante controlador de registro personalizado, le recomiendo que use Tipos virtuales (que no necesita agregar ningún código PHP)
Inspirado en la respuesta de Petar Dzhambazov y Halk , señoras y caballeros que te presenté una manera mejor y más corto en lugar del código de registro personalizado duplicado todo el tiempo.
USO
Eso es todo, no hay archivos o líneas PHP adicionales: ¡use las ventajas de Magento 2: Tipos virtuales!
Espero que esto ayude ;)
fuente
Hay una actualización para el registrador en 2.2. Puede habilitar el registrador para el modo de producción ejecutando SQL:
Luego puede usar
\Psr\Log\LoggerInterface
para imprimir el registro al igual que las respuestas anteriores:fuente
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.
Inyectar
$logger
clase en el constructor\Psr\Log\LoggerInterface $logger
Esto se logra pasando $ logger como argumento.
Inicializar
$logger
en constructorEn la función dentro de la clase que desea registrar, use la línea a continuación
fuente
Si lo necesita dentro de su clase individual con un archivo de registro personalizado:
fuente
Coloque el código del registrador PSR en su constructor:
entonces puedes usar en tu función como:
fuente