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 -