CakePHP - Logging

Logar no CakePHP é uma tarefa muito fácil. Você só precisa usar uma função. Você pode registrar erros, exceções, atividades do usuário, ações executadas pelos usuários, para qualquer processo em segundo plano, como cronjob. Registrar dados no CakePHP é fácil. A função log () é fornecida pelo LogTrait, que é o ancestral comum para quase todas as classes do CakePHP.

Configuração de registro

Podemos configurar o arquivo de login config/app.php. Há uma seção de registro no arquivo, onde você pode configurar as opções de registro conforme mostrado na imagem a seguir.

Por padrão, você verá dois níveis de registro - error e debugjá configurado para você. Cada um lidará com diferentes níveis de mensagens.

O CakePHP suporta vários níveis de registro, conforme mostrado abaixo -

  • Emergency - O sistema está inutilizável

  • Alert - A ação deve ser tomada imediatamente

  • Critical - Condições críticas

  • Error - Condições de erro

  • Warning - Condições de aviso

  • Notice - Condição normal, mas significativa

  • Info - Mensagens informativas

  • Debug - Mensagens de nível de depuração

Gravando no arquivo de log

Existem duas maneiras pelas quais podemos escrever em um arquivo de log.

O primeiro é usar o estático write()método. A seguir está a sintaxe do estáticowrite() método.

Sintaxe write (integer | string $ level , mixed $ message , string | array $ context [])
Parâmetros

O nível de gravidade da mensagem que está sendo gravada. O valor deve ser um número inteiro ou string correspondente a um nível conhecido.

Conteúdo da mensagem para registrar.

Dados adicionais a serem usados ​​para registrar a mensagem. A chave de escopo especial pode ser passada para ser usada para filtrar ainda mais os mecanismos de log a serem usados. Se uma string ou uma matriz de índice numericamente for passada, ela será tratada como a chave de escopo. VejoCake\Log\Log::config() para obter mais informações sobre os escopos de registro.

Devoluções

boleano

Descrição

Grava a mensagem e o tipo fornecidos para todos os adaptadores de log configurados. Os adaptadores configurados são transmitidos às variáveis ​​$ level e $ message. $ level é uma das seguintes strings / valores.

A segunda é usar o log() shortcut função disponível em qualquer usando o LogTrait O registro de chamadas () chamará internamente Log::write() -

Exemplo

Faça alterações no config/routes.php arquivo conforme mostrado no programa a seguir.

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();
});

Criar uma LogexsController.php arquivo em src/Controller/LogexsController.php. Copie o código a seguir no arquivo do controlador.

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');
      }
   }
?>

Crie um diretório Logexs em src/Template e sob esse diretório crie um Viewarquivo chamado index.php. Copie o código a seguir nesse arquivo.

src/Template/Logexs/index.php

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

Execute o exemplo acima visitando o seguinte URL.

http: // localhost / cakephp4 / logex

Resultado

Após a execução, você receberá a seguinte saída.

Os logs serão adicionados ao arquivo log / debug.log -