当前位置: 首页 > 文档资料 > CakePHP 入门教程 >

记录(Logging)

优质
小牛编辑
125浏览
2023-12-01

登录CakePHP是一项非常简单的任务。 你只需要使用一个功能。 您可以记录任何后台进程(如cronjob errors, exceptions, user activities, action taken by users 。 在CakePHP中记录数据很简单 - LogTrait提供了log()函数, LogTrait是几乎所有CakePHP类的共同祖先。

记录配置

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

记录配置

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

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

  • Emergency - 系统无法使用

  • Alert - 必须立即采取行动

  • Critical - 关键条件

  • Error - 错误条件

  • Warning - 警告条件

  • Notice - 正常但重要的条件

  • Info - 信息性消息

  • Debug - 调试级消息

写入日志文件

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

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

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

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

要记录的消息内容。

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

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

第二种是使用任何使用LogTrait Calling log()log() shortcut函数LogTrait Calling log()将在内部调用Log::write() -

例子 (Example)

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

config/routes.php

<?php
   use Cake\Core\Plugin;
   use Cake\Routing\RouteBuilder;
   use Cake\Routing\Router;
   Router::defaultRouteClass('DashedRoute');
   Router::scope('/', function (RouteBuilder $routes) {
      $routes->connect('logex',['controller'=>'Logexs','action'=>'index']);
      $routes->fallbacks('DashedRoute');
   });
   Plugin::routes();

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

src/Controller/LogexController.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');
      }
   }
?>

Logexs at src/Template创建目录Logexs at src/Template在该目录下创建一个名为index.ctpView文件。 复制该文件中的以下代码。

src/Template/Logexs/index.ctp

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

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

http://localhost:85/CakePHP/logex

输出 (Output)

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

Logexs