Cómo iniciar sesión mensaje de error en Drupal
-
19-09-2019 - |
Pregunta
Cómo iniciar nuestros mensajes propia de error (por ejemplo: error debido a la fecha de entrada de usuario no válido), que se genera en PHP programa para registro de errores de Drupal .
Solución
Puede utilizar la función rel="noreferrer"> watchdog
:
watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)
Citando el manual, los parámetros son:
-
$type
La categoría a la que pertenece este mensaje. -
$message
El mensaje para almacenar en el registro. - Array
$variables
de variables para reemplazar en el mensaje en la pantalla o NULL si el mensaje ya está traducido o no posible traducir. -
$severity
La gravedad del mensaje, según RFC 3164 -
$link
Un enlace a asociar con el mensaje.
Y los niveles de error se pueden encontrar en la página de watchdog_severity_levels
. Por un error, lo más probable que el uso WATCHDOG_ERROR
, o tal vez incluso algo más "crítico", dependiendo del tipo de error.
Otros consejos
Drupal 8
// Logs a notice
\Drupal::logger('my_module')->notice($message);
// Logs an error
\Drupal::logger('my_module')->error($message);
Vea más ejemplos en Cómo mensajes de registro en Drupal 8 .
1) En efecto, el regulador es una forma estándar para grabar propios errores de PHP.
2) Alternativamente, si usted necesita ver de inmediato los mensajes de error durante la depuración de sus páginas de Drupal, es posible que desee verlos registran / impreso a la derecha en la página relacionada - en la consola de Firebug. A veces es esto muy conveniente cuando se puede ver los registros relacionados con páginas justo a tiempo. Esto requiere - módulo Devel , Firebug extensión a Firefox y posiblemente FirePHP .
Puede utilizar la función DFB () para escribir mensajes de registro directamente a la consola de Firebug en general.
dfb($input, $label = NULL)
Si desea mantener sus mensajes de registro relacionadas con Drupal fuera de la consola de Firebug normal, puede escribir mensajes a la Drupal para Firebug registro con la función firep ():
firep($item, $optional_title)
Watchdog es el camino a seguir para un sistema de producción, sin duda, pero durante la depuración encuentro la función drupal_set_message
útil.
Se emite el mensaje a la pantalla donde se visualizan normalmente los 'Operación mensajes de tipo Successful' (así que asegúrese de que los elimine antes de hacer el sitio en vivo).
En drupal 7 podemos mensaje de registro por método siguiente:
Drupal función de vigilancia que puede utilizar para iniciar la sesión en el mensaje de la base de datos, asegúrese de que hemos habilitado módulo central opcional para el registro de base de datos en / admin / build / módulos.
watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)
Tipo $: La categoría a la que pertenece este mensaje, Ejemplo:. PHP, cron .., podemos filtro de mensajes por tipo
$ mensaje: El mensaje para almacenar en el registro, Ejemplo: 'El siguiente módulo no se encuentra en el sistema de archivos: security_review'
variables $: Serie de variables para reemplazar en el mensaje en la pantalla o NULL si el mensaje ya está traducido o no posible traducir. para hacer mensaje traducido, no deje pasar las variables de pase valor dinámico en el mensaje debe añadirse mediante el uso de cuerdas de marcador de posición.
Ejemplo: watchdog ( 'cg_volunteer', 'cg en form_alter% formemente', array ( '% formemente' forma => $ [ '# id']), WATCHDOG_NOTICE, $ link = NULL);
$ severidad La gravedad del mensaje, los registros se pueden filtrar por gravedad según RFC 3164. Los valores posibles son WATCHDOG_ERROR, WATCHDOG_WARNING, etc. Por ejemplo, véase más https: // API. drupal.org/api/drupal/includes!bootstrap.inc/function/watchdog/7.x
$ : Un enlace a asociar con el mensaje.
Ejemplo
// para los registros de avisos
watchdog('my_module', $message, array());
// para Loging error
watchdog('my_module', $message, array(), WATCHDOG_ERROR);
En drupal 8 se utilizó método siguiente:
// para los registros de un aviso.
\Drupal::logger('my_module')->notice($message);
// Para registra un error.
\Drupal::logger('my_module')->error($message);
// para la alerta, se deben tomar medidas de inmediato.
\Drupal::logger('my_module')->alert($message);
// Para mensaje crítico.
\Drupal::logger('my_module')->critical($message);
// Para los mensajes de nivel de depuración.
\Drupal::logger('my_module')->debug($message);
// Para emergencia, el sistema es inutilizable.
\Drupal::logger('my_module')->emergency($message);
// Para Advertencia
\Drupal::logger('my_module')->warning($message);
// Para los mensajes informativos.
\Drupal::logger('my_module')->info($message);
También para traducir no debemos usar la función t ().
\Drupal::logger('my_module')->alert('Message from @module: @message.', [
'@module' => $module,
'@message' => $message,
]);
esto se traduce en tiempo de ejecución.
Ejemplo:
\Drupal::logger('content_entity_example')->notice('@type: deleted %title.',
array(
'@type' => $this->entity->bundle(),
'%title' => $this->entity->label(),
));
Tanto watchdog
para D7 y D8 \Drupal::logger
para escribirá ingrese en la tabla watchdog
(en su base de datos), y con datos de gran tamaño conectados usted puede imaginar impacto en el rendimiento.
Puede utilizar la función de php error_log
hacerlo (ver manual de PHP ).
error_log("Your message", 3, "/path/to/your/log/file.log");
Es necesario tener permiso para escribir en el archivo de registro (
/path/to/your/log/file.log
)
drupal-8 < a class = "post-tag" href = "/ preguntas / etiquetado / drupal" title = "Mostrar preguntas etiquetados 'drupal'" rel "etiqueta" => Drupal php ingrese
// Get logger factory.
$logger = \Drupal::service('logger.factory');
// Log a message with dynamic variables.
$nodeType = 'Article';
$userName = 'Admin';
$logger->get($moduleName)->notice('A new "@nodeType" created by %userName.', [
'@nodeType' => $nodeType,
'%userName' => $userName,
]);