การเขียนไปยังข้อผิดพลาดมาตรฐาน

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 ซึ่งมีความเหมาะสมโดยเฉพาะสำหรับแอปพลิเคชันที่ต้องการการกำหนดค่าการบันทึกข้อมูลรายละเอียดหรือการตรวจสอบบันทึกภายนอก