Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menjana log ralat dalam php

Bagaimana untuk menjana log ralat dalam php

PHPz
PHPzasal
2023-03-28 10:38:24785semak imbas

Dalam pembangunan PHP, pelbagai ralat dan pengecualian sering berlaku Mesej ralat ini sangat penting semasa menyahpepijat dan menyelesaikan masalah. Menjana log ralat ialah cara yang sangat baik untuk membantu kami mencari masalah dengan cepat dan membetulkannya. Artikel ini akan memperkenalkan cara menjana log ralat dalam PHP.

1. Tetapan fail konfigurasi php.ini

Pertama, kita perlu mencari fail php.ini, yang biasanya terdapat dalam direktori pemasangan PHP. Buka fail dan cari arahan log_errors dan error_log untuk dikonfigurasikan.

  • log_errors: Apabila arahan ini ditetapkan kepada Hidup, ini bermakna menghidupkan fungsi log ralat PHP.
  • error_log: Apabila arahan log_errors didayakan, arahan ini digunakan untuk menentukan laluan output dan nama fail log ralat, yang boleh menjadi laluan relatif atau mutlak.

Sebagai contoh, kita boleh menetapkan log_errors kepada Hidup, dan kemudian menetapkan error_log kepada /var/www/myapp/phperrors.log, kemudian PHP akan mengeluarkan mesej ralat kepada /var apabila ralat berlaku. /www/myapp/phperrors.log fail.

2. Sediakan pengendalian ralat dalam kod PHP

Selain mengkonfigurasi dalam fail php.ini, kami juga boleh menyediakan pengendalian ralat dalam kod PHP. PHP menyediakan fungsi set_error_handler(), yang boleh mendaftarkan fungsi tersuai sebagai fungsi pengendalian ralat PHP. Apabila ralat berlaku dalam PHP, fungsi pengendalian ralat akan dipanggil secara automatik untuk mengendalikan maklumat ralat.

Contohnya:

function myErrorHandler($errno, $errstr, $errfile, $errline) {
    error_log(date('Y-m-d H:i:s')." Error: {$errstr} in {$errfile} on line {$errline}\n", 3, "/var/www/myapp/phperrors.log");
}
set_error_handler("myErrorHandler");

Dalam contoh ini, kami mentakrifkan fungsi pengendalian ralat tersuai yang dipanggil myErrorHandler() dan mendaftarkannya sebagai ralat PHP menggunakan fungsi pemprosesan fungsi set_error_handler(). Apabila ralat berlaku dalam PHP, fungsi ini akan dipanggil secara automatik dan maklumat ralat akan dikeluarkan kepada fail dalam laluan yang ditentukan.

3 Gunakan perpustakaan Monolog dalam aplikasi

Selain daripada dua kaedah di atas, kami juga boleh menggunakan Monolog perpustakaan pihak ketiga untuk menjana log ralat PHP . Monolog ialah perpustakaan pengelogan PHP yang popular yang menyediakan pelbagai kaedah pemprosesan log yang fleksibel.

Pertama, kita perlu memasang perpustakaan Monolog menggunakan Komposer:

composer require monolog/monolog

Kemudian memperkenalkan perpustakaan Monolog ke dalam kod PHP dan mencipta pengendali ralat. Di sini kita mengambil output ke fail sebagai contoh.

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

// 创建一个名为mylog的日志记录器
$mylog = new Logger('mylog');

// 添加一个输出到文件的处理器,输出到/var/www/myapp/phperrors.log文件中
$mylog->pushHandler(new StreamHandler('/var/www/myapp/phperrors.log', Logger::ERROR));

// 绑定异常和错误处理函数,输出到日志中
function myErrorHandler($exception) {
    global $mylog;
    $mylog->addError($exception->getMessage(), ['exception' => $exception]);
}
set_exception_handler('myErrorHandler');
set_error_handler(function($errno, $errstr, $errfile, $errline) {
    myErrorHandler(new ErrorException($errstr, 0, $errno, $errfile, $errline));
});

Dalam contoh ini, kami mencipta logger bernama mylog dan menggunakan StreamHandler untuk mengeluarkan maklumat ralat ke fail /var/www/myapp/phperrors.log. Kemudian kami mengikat fungsi myErrorHandler() kepada pengecualian PHP dan fungsi pengendalian ralat melalui kaedah set_exception_handler() dan set_error_handler().

4. Ringkasan

Melalui tiga kaedah di atas, kami boleh menjana log ralat dalam PHP dan mencari masalah dengan mudah. Kaedah yang mana untuk dipilih boleh diputuskan mengikut situasi sebenar dan tabiat peribadi. Semasa pembangunan, kita mesti merekodkan log ralat tepat pada masanya dan menyelesaikan masalah ralat tepat pada masanya, dengan itu meningkatkan kestabilan dan kebolehselenggaraan kod.

Atas ialah kandungan terperinci Bagaimana untuk menjana log ralat dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn