CakePHP - 日志记录

CakePHP 中的日志记录是一项非常简单的任务。您只需使用一个函数。您可以记录任何后台进程(如 cronjob)的错误、异常、用户活动、用户采取的操作。在 CakePHP 中记录数据很容易。log() 函数由 LogTrait 提供,它是几乎所有 CakePHP 类的共同祖先。

日志记录配置

我们可以在文件 config/app.php 中配置日志。文件中有一个日志部分,您可以在其中配置日志记录选项,如以下屏幕截图所示。

Programming

默认情况下,您将看到已为您配置的两个日志级别 − errordebug。每个级别将处理不同级别的消息。

CakePHP 支持各种日志记录级别,如下所示 −

  • Emergency − 系统不可用

  • Alert − 必须立即采取行动

  • Critical − 严重情况

  • Error − 错误情况

  • Warning − 警告情况

  • Notice − 正常但重要的情况

  • Info − 信息性消息

  • Debug −调试级别消息

写入日志文件

我们可以通过两种方式写入日志文件。

第一种是使用静态 write() 方法。以下是静态 write() 方法的语法。

语法 write( integer|string $level, combined $message, string|array $context [] )
参数

正在写入的消息的严重性级别。该值必须是与已知级别匹配的整数或字符串。

要记录的消息内容。

用于记录消息的其他数据。可以传递特殊范围键,以用于进一步过滤要使用的日志引擎。如果传递了字符串或数字索引数组,它将被视为范围键。有关日志范围的更多信息,请参阅 Cake\Log\Log::config()

返回

布尔值

描述

将给定的消息和类型写入所有已配置的日志适配器。已配置的适配器传递了 $level 和 $message 变量。 $level 是以下字符串/值之一。

第二种方法是使用 log() 快捷方式 函数,该函数在任何使用 LogTrait 的程序上都可用。调用 log() 将在内部调用 Log::write()

示例

config/routes.php 文件中进行更改,如以下程序所示。

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

src/Controller/LogexsController.php 处创建一个 LogexsController.php 文件。将以下代码复制到控制器文件中。

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

src/Template 处创建一个目录 Logexs,并在该目录下创建一个名为 index.php 的 View 文件。将以下代码复制到该文件中。

src/Template/Logexs/index.php

日志文件中写入了一些内容。检查日志文件 logs\debug.log

通过访问以下 URL 执行上述示例。

http://localhost/cakephp4/logex

输出

执行后,您将收到以下输出。

Debugs

日志将添加到 log/debug.log 文件中 −

Logfile