PHP:
การเขียนไปยังข้อผิดพลาดมาตรฐาน
วิธีการ:
ใน PHP, การเขียนไปยัง stderr สามารถทำได้โดยใช้ฟังก์ชัน fwrite()
ร่วมกับค่าคงที่ที่กำหนดไว้ล่วงหน้า STDERR
ซึ่งแทนกระแสเอาท์พุตข้อความผิดพลาด
<?php
// เขียนข้อความง่ายๆ ไปยัง stderr
fwrite(STDERR, "This is an error message.\n");
ตัวอย่างเอาท์พุตเมื่อสคริปต์ถูกเรียกใช้จากคอมมานด์ไลน์:
This is an error message.
เพื่อแสดงการใช้งานที่มีประโยชน์มากขึ้น ลองพิจารณาสถานการณ์ที่คุณกำลังแยกวิเคราะห์ข้อมูลจากผู้ใช้และพบข้อมูลที่ไม่คาดคิด:
<?php
$input = 'unexpected data';
// จำลองการเกิดข้อผิดพลาดในการประมวลผลข้อมูลจากผู้ใช้
if ($input === 'unexpected data') {
fwrite(STDERR, "Error: Unexpected input received.\n");
exit(1); // ออกจากโปรแกรมด้วยค่าที่ไม่เป็นศูนย์เพื่อระบุว่าเกิดข้อผิดพลาด
}
ในขณะที่ความสามารถในตัวของ PHP ในการจัดการกับ stderr โดยทั่วไปแล้วเพียงพอสำหรับการใช้งานแล้ว แต่เมื่อต้องการจัดการกับแอปพลิเคชันที่ซับซ้อนมากขึ้นหรือต้องการให้การบันทึกผิดพลาดของ stderr รวมเข้ากับระบบภายนอก ไลบรารีของบุคคลที่สามเช่น Monolog สามารถเป็นทางเลือกที่แข็งแกร่ง Monolog เป็นไลบรารีการบันทึกข้อมูลที่สามารถจัดการกับ stderr รวมทั้งเป้าหมายอื่นๆ (ไฟล์, ซอกเก็ต ฯลฯ)
การใช้ Monolog เขียนไปยัง stderr:
ขั้นตอนแรก, ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Monolog ผ่าน Composer:
composer require monolog/monolog
จากนั้น, คุณสามารถกำหนดค่า Monolog ให้ใช้ StreamHandler
ที่มุ่งเป้าไปที่ php://stderr
:
<?php
require 'vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// สร้างช่องทางบันทึก
$log = new Logger('name');
$log->pushHandler(new StreamHandler('php://stderr', Logger::WARNING));
// เพิ่มข้อความบันทึกไปยัง stderr
$log->warning('This is a warning message.');
โค้ดข้างต้นใช้ประโยชน์จาก Monolog เพื่อส่งข้อความแจ้งเตือนไปยัง stderr ซึ่งมีความเหมาะสมโดยเฉพาะสำหรับแอปพลิเคชันที่ต้องการการกำหนดค่าการบันทึกข้อมูลรายละเอียดหรือการตรวจสอบบันทึกภายนอก