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 -