记录(Logging)
登录CakePHP是一项非常简单的任务。 你只需要使用一个功能。 您可以记录任何后台进程(如cronjob errors, exceptions, user activities, action taken by users 。 在CakePHP中记录数据很简单 - LogTrait提供了log()函数, LogTrait是几乎所有CakePHP类的共同祖先。
记录配置
我们可以配置登录文件config/app.php 。 文件中有一个日志部分,您可以在其中配置日志记录选项,如以下屏幕截图所示。
默认情况下,您将看到两个日志级别 - 已为您配置了error和debug 。 每个都将处理不同级别的消息。
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.ctp的View文件。 复制该文件中的以下代码。
src/Template/Logexs/index.ctp
Something is written in log file. Check log file logs\debug.log
通过访问以下URL执行上述示例。
http://localhost:85/CakePHP/logex
输出 (Output)
执行后,您将收到以下输出。