CakePHP - Journalisation

Se connecter à CakePHP est une tâche très simple. Vous n'avez qu'à utiliser une fonction. Vous pouvez enregistrer les erreurs, les exceptions, les activités des utilisateurs, les actions entreprises par les utilisateurs, pour tout processus d'arrière-plan tel que cronjob. La journalisation des données dans CakePHP est facile. La fonction log () est fournie par le LogTrait, qui est l'ancêtre commun à presque toutes les classes CakePHP.

Configuration de la journalisation

Nous pouvons configurer le fichier de connexion config/app.php. Il y a une section de journal dans le fichier, où vous pouvez configurer les options de journalisation comme indiqué dans la capture d'écran suivante.

Par défaut, vous verrez deux niveaux de journalisation - error et debugdéjà configuré pour vous. Chacun traitera différents niveaux de messages.

CakePHP prend en charge différents niveaux de journalisation comme indiqué ci-dessous -

  • Emergency - Le système est inutilisable

  • Alert - Des mesures doivent être prises immédiatement

  • Critical - Conditions critiques

  • Error - Conditions d'erreur

  • Warning - Conditions d'avertissement

  • Notice - État normal mais significatif

  • Info - Messages d'information

  • Debug - Messages au niveau du débogage

Écriture dans un fichier journal

Il existe deux façons d'écrire dans un fichier journal.

Le premier est d'utiliser le statique write()méthode. Voici la syntaxe du staticwrite() méthode.

Syntaxe write (entier | string $ level , mixed $ message , string | array $ context [])
Paramètres

Le niveau de gravité du message en cours d'écriture. La valeur doit être un entier ou une chaîne correspondant à un niveau connu.

Contenu du message à enregistrer.

Données supplémentaires à utiliser pour consigner le message. La clé de portée spéciale peut être transmise pour être utilisée pour un filtrage supplémentaire des moteurs de journaux à utiliser. Si une chaîne ou un tableau d'indexation numérique est passé, il sera traité comme la clé de portée. VoirCake\Log\Log::config() pour plus d'informations sur les étendues de journalisation.

Retour

booléen

La description

Écrit le message et le type donnés sur tous les adaptateurs de journal configurés. Les adaptateurs configurés reçoivent à la fois les variables $ level et $ message. $ level est l'une des chaînes / valeurs suivantes.

La seconde consiste à utiliser le log() shortcut fonction disponible sur toute utilisation du LogTrait L'appel de log () appellera en interne Log::write() -

Exemple

Apportez des modifications au config/routes.php fichier comme indiqué dans le programme suivant.

config/routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',
      ['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('logex',['controller'=>'Logexs','action'=>'index']);
   $builder->fallbacks();
});

Créer un LogexsController.php déposer à src/Controller/LogexsController.php. Copiez le code suivant dans le fichier du contrôleur.

src/Controller/LogexsController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\Log\Log;
   class LogexsController extends AppController{
      public function index(){
         /*The first way to write to log file.*/
         Log::write('debug',"Something didn't work.");
         /*The second way to write to log file.*/
         $this->log("Something didn't work.",'debug');
      }
   }
?>

Créer un annuaire Logexs à src/Template et sous ce répertoire, créez un Viewfichier appelé index.php. Copiez le code suivant dans ce fichier.

src/Template/Logexs/index.php

Something is written in log file. Check log file logs\debug.log

Exécutez l'exemple ci-dessus en visitant l'URL suivante.

http: // localhost / cakephp4 / logex

Production

Lors de l'exécution, vous recevrez la sortie suivante.

Les journaux seront ajoutés au fichier log / debug.log -