CakePHP - การบันทึก

การเข้าสู่ CakePHP เป็นเรื่องง่ายมาก คุณต้องใช้ฟังก์ชันเดียว คุณสามารถบันทึกข้อผิดพลาดข้อยกเว้นกิจกรรมของผู้ใช้การดำเนินการของผู้ใช้สำหรับกระบวนการเบื้องหลังเช่น cronjob การบันทึกข้อมูลใน CakePHP เป็นเรื่องง่าย ฟังก์ชัน log () มีให้โดย LogTrait ซึ่งเป็นบรรพบุรุษร่วมสำหรับคลาส CakePHP เกือบทั้งหมด

การกำหนดค่าการบันทึก

เราสามารถกำหนดค่าล็อกอินไฟล์ config/app.php. มีส่วนบันทึกในไฟล์ซึ่งคุณสามารถกำหนดค่าตัวเลือกการบันทึกดังที่แสดงในภาพหน้าจอต่อไปนี้

ตามค่าเริ่มต้นคุณจะเห็นบันทึกสองระดับ - error และ debugกำหนดค่าให้คุณแล้ว แต่ละคนจะจัดการข้อความในระดับที่แตกต่างกัน

CakePHP รองรับระดับการบันทึกต่างๆดังที่แสดงด้านล่าง -

  • Emergency - ระบบไม่สามารถใช้งานได้

  • Alert - ต้องดำเนินการทันที

  • Critical - เงื่อนไขวิกฤต

  • Error - เงื่อนไขข้อผิดพลาด

  • Warning - เงื่อนไขการเตือน

  • Notice - สภาพปกติ แต่มีนัยสำคัญ

  • Info - ข้อความให้ข้อมูล

  • Debug - ข้อความระดับดีบัก

กำลังเขียนไฟล์บันทึก

มีสองวิธีที่เราสามารถเขียนลงในไฟล์บันทึก

ประการแรกคือการใช้แบบคงที่ write()วิธี. ต่อไปนี้เป็นไวยากรณ์ของแบบคงที่write() วิธี.

ไวยากรณ์ เขียน (จำนวนเต็ม | สตริง$ ระดับผสม$ ข้อความสตริง | อาร์เรย์$ บริบท [])
พารามิเตอร์

ระดับความรุนแรงของข้อความที่กำลังเขียน ค่าต้องเป็นจำนวนเต็มหรือสตริงที่ตรงกับระดับที่ทราบ

เนื้อหาข้อความที่จะบันทึก

ข้อมูลเพิ่มเติมที่จะใช้ในการบันทึกข้อความ คุณสามารถส่งผ่านคีย์ขอบเขตพิเศษเพื่อใช้สำหรับการกรองล็อกเอ็นจินที่จะใช้ต่อไป หากส่งสตริงหรืออาร์เรย์ดัชนีที่เป็นตัวเลขจะถือว่าเป็นคีย์ขอบเขต ดูCake\Log\Log::config() สำหรับข้อมูลเพิ่มเติมเกี่ยวกับขอบเขตการบันทึก

ผลตอบแทน

บูลีน

คำอธิบาย

เขียนข้อความที่กำหนดและพิมพ์ไปยังล็อกอะแด็ปเตอร์ที่กำหนดค่าไว้ทั้งหมด อะแด็ปเตอร์ที่กำหนดค่าจะถูกส่งผ่านทั้งตัวแปร $ level และ $ message $ level คือหนึ่งในสตริง / ค่าต่อไปนี้

ประการที่สองคือการใช้ไฟล์ log() shortcut ฟังก์ชั่นที่มีอยู่ในการใช้ LogTrait บันทึกการโทร () จะโทรภายใน 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();
});

สร้างไฟล์ LogexsController.php ไฟล์ที่ src/Controller/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');
      }
   }
?>

สร้างไดเร็กทอรี Logexs ที่ src/Template และภายใต้ไดเร็กทอรีนั้นให้สร้างไฟล์ Viewไฟล์ชื่อ index.php คัดลอกรหัสต่อไปนี้ในไฟล์นั้น

src/Template/Logexs/index.php

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

ดำเนินการตามตัวอย่างข้างต้นโดยไปที่ URL ต่อไปนี้

http: // localhost / cakephp4 / logex

เอาต์พุต

เมื่อดำเนินการคุณจะได้รับผลลัพธ์ต่อไปนี้

บันทึกจะถูกเพิ่มลงในไฟล์ log / debug.log -