CakePHP的日志记录
在CakePHP中记录日志是一件很容易的事,你只需要使用一个方法就可以实现。你可以为任何后台进程(如cronjob)记录错误,异常,用户活动,用户采取的行动。在CakePHP中记录数据很容易-只要使用log()方法,此方法由LogTrait类提供,LogTrait几乎是所有的CakePHP类的祖先类。
日志配置
我们可以在config/app.php文件中配置日志,在文件中如下截图部分可以设置配置选项。
默认情况下,你会看到两个日志级别- 错误和调试已经配置好了。他们将处理不同级别的消息。
CakePHP支持多种日志记录级别如下 -
紧急情况 -系统不可用
警告 -动作必须立即执行
关键 -关键状况
错误 -错误状况
警告(警报) -警告状况
通知 -普通但有意义的状况
信息 -信息性消息
调试 -调试级消息
写入日志文件
我们有两种方式可以在日志文件中写入日志。
第一种方法是使用静态write()方法。以下是静态write()方法的语法。
语法 | write( integer|string $level , mixed $message , string|array $context[] ) | ||
参数说明 | $level:严重性级别,值必须是与已知级别相匹配的整形或者字符串; $message:信息内容; $context[]:记录消息所用的额外数据,可以传递一个特殊的范围键给要所要用的日志引擎做过滤用。如果传递的是一个字符串或数字索引数组,它将被当作范围键。更多信息请参考Cake\Log\Log::config() | ||
返回结果 | 布尔型 | ||
说明 | 写入所给的信息并打印到全部已配置的日志适配器。 适配器传递$level和$message变量。$level是以下字符串/值: |
第二种方法是使用log()快捷方法,此方法会在内部调用Log::write()方法,在所有使用LogTrait调用log() 情况下都可用 -
修改config/routes.php文件如下。
config/routes.php文件
<?php use CakeCorePlugin; use CakeRoutingRouteBuilder; use CakeRoutingRouter; Router::defaultRouteClass('DashedRoute'); Router::scope('/', function (RouteBuilder $routes) { $routes->connect('logex',['controller'=>'Logexs','action'=>'index']); $routes->fallbacks('DashedRoute'); }); Plugin::routes();
在src/Controller/目录下创建一个LogexController.php文件。复制以下代码至其中。
src/Controller/LogexController.php
<?php namespace AppController; use AppControllerAppController; use CakeLogLog; 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目录,并在此Logexs目录下创建一个名为index.ctp的视图文件。复制以下代码至其中。
src/Template/Logexs/index.ctp
Something is written in log file. Check log file logsdebug.log
通过访问以下网址执行上面的例子。
http://localhost:85/CakePHP/logex
输出
执行以上程序,您会看到如下页面。
更多建议: