Registro de errores de Magento: una guía definitiva

Incluso si no es un desarrollador o un especialista técnico, trabajar con Magento requiere ciertos conocimientos tanto sobre el propio CMS como sobre algunas cosas básicas sobre cómo funcionan las aplicaciones web.

El registro de errores de Magento es una herramienta que le permite solucionar problemas básicos y comprender la esencia de sus problemas, especialmente cuando ve que algo va mal, pero no tiene idea de qué es exactamente lo que no está bien.

Además, puede haber casos en los que las aplicaciones escriban registros de errores sin hacer realmente su trabajo, lo que causa problemas de velocidad y gigabytes de archivos de registro de errores. Debe usar el registro de errores para mantener su sitio y mantenerlo saludable y sin problemas.

Siga leyendo y lo guiaré a través de la recuperación de esta información útil. Puede parecer un poco técnico, pero créanme o no, es bastante fácil.

Concepto general de registros de errores

Permítanme comenzar desde el principio y echar un vistazo a cómo funciona un sitio web de Magento en Internet:

Probablemente sepa que cuando un cliente solicita las páginas de un sitio web, la solicitud es manejada por varias aplicaciones: en primer lugar, es un servidor web, que se comunica con la aplicación Magento PHP. Magento, a su vez, envía consultas a la base de datos. A veces, durante este proceso, las cosas pueden salir mal. Luego, la aplicación responsable escribe el error y la información correspondiente en un archivo especial llamado registro de errores. El monitoreo de estos archivos de registro puede ayudarlo a descubrir y solucionar posibles problemas de los que quizás no tenga conocimiento durante mucho tiempo. 

Por ejemplo, no hay suficiente memoria para cargar todos los productos en los pedidos, porque es un pedido realmente grande (afortunadamente, por cierto) y un cliente desea abrir la página de descripción general del pedido para continuar con el nuevo pedido. ¿Qué verán en este caso? Puede ser:

  • una página en blanco
  • Una página parcialmente cargada
  • Una página con secuencias de comandos de actualización AJAX sin fin
  • Algunos resultados impredecibles

En cualquier caso, apuesto a que le gustaría evitar tales situaciones. Pero el truco es que, cuando otros clientes obtienen una vista previa de los pedidos pequeños, el sistema funciona como debería y los clientes no informan ningún problema. Aquí es cuando brilla el monitoreo del registro de errores. Tiene la oportunidad de ver errores y emprender acciones para eliminar sus raíces. Sin consultar el registro de errores, no se dará cuenta de este problema con los pedidos grandes.

 

¿Qué registros de errores debemos comprobar? De la imagen de arriba, entiende que en algunos casos, como una página o imagen faltante, necesitamos los registros del servidor web; y para los errores del sistema Magento, como un tipo de bloque no válido, debemos verificar los registros de errores de Magento.

Este artículo se centra en la aplicación Magento, por lo que omitiremos la revisión de los registros de la base de datos y del servidor web (aún mostraremos un ejemplo en la sección de tecnología más adelante ) y vamos al grano, al registro de errores de Magento. En los siguientes párrafos habilitaremos el registro, encontraremos el archivo de registro, comprenderemos su estructura y veremos ejemplos de algunos errores de la vida real. Además, habrá un consejo muy útil que te ahorrará mucho tiempo al final del artículo, ¡así que permanece atento!

Habilitar el registro de errores en Magento

En primer lugar, debemos decirle a la plataforma que guarde los registros de errores para que podamos realizar una auditoría de Magento del registro . Afortunadamente, en Magento 2.x , el registro de errores está habilitado de forma predeterminada, no se necesita una configuración especial. En Magento 1.x está oculto en la sección Admin > Sistema > Configuración > Avanzado > Desarrollador:

Encuentre el archivo de registro de errores en Magento

Bien, tenemos el registro habilitado y ahora es el momento de encontrar los archivos de registro. Entonces, ¿cuál es la ubicación del registro de Magento? Para el sitio web de Magento 1.x , se encuentran en la carpeta <magento-folder>/var/log/ . Si no ve archivos aquí, asegúrese de que la carpeta tenga suficientes permisos de escritura, para que el servidor web pueda crear y modificar archivos dentro. Nuestros archivos principales son system.log con todas las advertencias de PHP y problemas con archivos XML yException.log con  todos los casos excepcionales en los que Magento no puede manejar los datos por algún motivo.

Magento 2.x utiliza un enfoque ligeramente diferente. Divide los errores por gravedad de acuerdo con el Protocolo Syslog  en archivos como info.log, debug.log, system.log, etc. Para obtener más información, consulte esta página .

Estructura del archivo de registro de Magento

Si abrimos el archivo de registro, podemos encontrar un montón de líneas como esta:

16:02:21: 2021-03-13T15:12:23+00:00 ERR (3): Advertencia: key_exists() espera que el parámetro 2 sea una matriz, nulo proporcionado en /public_html /app/code/community/TIG/ MyParcel2021/Model/Api/MyParcel.php en la línea 752

El patrón es bastante sencillo. Es la etiqueta de fecha – 16:02:21: 2021-03-13T15:12:23+00:00, seguido del nivel de error – ERR (3): Advertencia, descripción del error “key_exists() espera…” y el afectado archivo MyParcel.php más la línea 752. ¿Qué significa? Significa que el módulo no puede calcular el costo de envío para alguna combinación de datos y es hora de (¡advertencia! ¡Anuncio explícito aquí!) cambiar a algunas soluciones de envío bien probadas .

Aquí hay otro ejemplo.

2021-03-13T15:17:24+00:00 DEPURACIÓN (7): Problema de seguridad: el boletín/suscripción no se ha incluido en la lista blanca.

Este informa sobre problemas con la visualización de un bloque de «suscribirse al boletín». Todo salió bien, y luego actualizó Magento a 1.9.3 pero no estaba al tanto de la nueva característica de seguridad. Como resultado, tiene bloques de CMS ocultos y suscriptores perdidos.

Un ejemplo más del registro de errores de Magento 2.x :

[2020-04-07 17:39:30] main.CRÍTICO: excepción ‘MagentoFrameworkExceptionLocalizedException’ con el mensaje ‘El elemento ‘producto.info.opciones’ ya tiene un elemento secundario con el alias ‘predeterminado’ en /var /www/html/ /proveedor/magento/framework/Data/Structure.php:611

Lo mismo tenemos la fecha, el nivel de error (crítico) el mensaje de error y la ubicación. Aquí asumo que algo anda mal con la página de visualización del producto y su bloque de información.

Si tiene algunos errores en el registro y no sabe lo que significan, no dude en publicarlos como comentarios, tal vez podamos resolverlos juntos. Además, es una buena idea buscar en Google el texto del error.

Quiero enfatizar el siguiente punto: siendo propietario de una tienda, no desarrollador, no tienes que entender estos mensajes de principio a fin. Es más importante ver que hay un problema y comprender que el problema debe solucionarse.

Mostrar mensajes de error de Magento

Pero, ¿qué pasa si eres un desarrollador y estás trabajando en un tema o módulo? Luego, todo cambia y, a menudo, tiene sentido mostrar los errores, no solo registrarlos en el archivo. De esta manera, verá los errores de inmediato, sin mirar los archivos de registro de errores.

Para hacer esto en Magento 1, puede activar la variable ambiental del modo desarrollador en el archivo .htaccess como este

SetEnv MAGE_IS_DEVELOPER_MODE «1»

Vea esta página para más detalles.

En Magento 2, compile toda la aplicación Magento en modo desarrollador.

php bin/magento deployment:mode:set desarrollador

Lea más sobre los modos de Magento 2 aquí .

Encontrar el registro de errores de Apache

Cada desarrollador finalmente llega a la situación en la que ve una página en blanco y no hay nada en los registros de errores de Magento. Significa que el error ocurrió incluso antes de que se lanzara Magento. Estos tipos de errores se denominan errores fatales. Lo puse en la sección de desarrolladores porque creo que podría suceder solo en el servidor de desarrollo. En este caso particular, vale la pena revisar los registros de errores de Apache. No tienen ubicaciones fijas, pero puede ejecutar el comando phpinfo() para ver la ruta. Las siguientes configuraciones deben establecerse en PHP.INI, host virtual o archivo .htaccess.

error_reporting = E_TODO | E_ESTRICTO

log_errors = activado

error_log = /var/ log/php_errors.log

Aquí hay un ejemplo muy simple del error fatal:

Error fatal: la clase ‘Mage_Compiler_Helper_Data’ no se encuentra en /var/www/app/Mage.php en la línea 547

Significa que falta un archivo requerido.

Cómo escribir en el archivo de registro de Magento

Este artículo trata sobre la lectura y la comprensión de los registros; sin embargo, me siento obligado a mostrar cómo escribir algo en los registros. Es útil cuando depura una aplicación sin una parte frontal, como tareas cron, llamadas API, o lo que sea.

En Magento 1, todo lo que necesita hacer es llamar al método estático Mage::log(), así:

Mago::log($var); // valores simples

O:

Mage::log(“valor: ” . print_r($var, 1), “mylogfile.txt”); // arreglos o valores nulos

Puede encontrar la firma de la función completa en la clase app/Mage.php:

registro de función estática pública ($mensaje, $nivel = nulo , $archivo = » , $forceLog = falso )

El enfoque ha cambiado significativamente en M2. Magento 2 cumple con el estándar PSR-3 . Como implementación predeterminada de registrador, utiliza Monolog . Mientras que el registro en sí se parece a $this->logger->debug(“algún mensaje”); hay mucha lógica adicional involucrada. Ver enlace 1 y enlace 2  para más detalles.

Recibir notificaciones sobre errores de Magento

Y aquí está el consejo útil que prometí presentarte. Si el sitio está en funcionamiento y no hay errores en los registros, puede configurar fácilmente un trabajo cron  para que le envíe un mensaje si los archivos no están vacíos (y luego eliminar el archivo).

0 23 * * * /usr/ lib/sendmail admin@website.com < /home/ website.com/www/ var /log/exception.log;

rm /home/website.com/www/ var /log/exception.log

Recibirá un mensaje cada vez que haya un nuevo registro en su registro de errores de Magento.

Esta es una solución simple para comenzar, pero recomiendo ir más allá y usar cualquier tipo de herramienta para recibir informes de errores de Magento.

Conclusión

Para concluir, me gustaría enumerar los puntos principales del artículo:

  1. En el modo de producción, todos los errores están ocultos, si no, deje de leer y desactívelos;
  2. Durante una solicitud de página puede surgir un error en un nivel diferente;
  3. Los errores fatales son manejados por el servidor web, no por el registrador de Magento , así que vea también los registros de Apache;
  4. Las excepciones se almacenan en /logs/ y en las carpetas /report/, diferentes para M1 y M2;
  5. Todos los demás errores están en los registros, si los registros están habilitados;
  6. Es fácil configurar notificaciones instantáneas sobre casos excepcionales en su sitio.

Si necesita volverse global con el análisis del rendimiento de su tienda, eche un vistazo a la extensión Informes avanzados .

Espero que tenga cuidado con los errores ocultos y mantenga sus registros vacíos y su sitio de Magento, saludable y mantenido.