Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk mengendalikan fail log ralat dalam php

Bagaimana untuk mengendalikan fail log ralat dalam php

PHPz
PHPzasal
2023-04-06 08:52:29601semak imbas

Semasa proses pembangunan PHP, fail log ralat bukan sahaja dapat membantu pembangun mencari masalah kod dengan cepat, tetapi juga membantu penyenggara menyelesaikan masalah. Oleh itu, fail log ralat perlu direkodkan dalam projek.

Terdapat banyak penyelesaian khusus untuk merekodkan fail log ralat Artikel ini akan memperkenalkan fungsi pengendalian ralat PHP.

  1. Tetapkan tahap ralat

Dalam PHP, anda boleh mengawal jenis ralat yang direkodkan dalam fail log dengan menetapkan tahap ralat. Ini boleh ditetapkan dalam kod menggunakan fungsi error_reporting() atau dalam fail php.ini. Tahap ralat dalam PHP terutamanya termasuk yang berikut:

1.1 E_ERROR, ralat maut, seperti fail atau pemalar tidak ditemui, dsb., atur cara ditamatkan

1.2 E_WARNING, ralat amaran, seperti kerana bilangan parameter Tidak betul atau fungsi mengembalikan nilai yang salah, dsb., boleh diabaikan

1.3 E_PARSE, ralat penghuraian, seperti ralat sintaks, dsb., program ditamatkan; E_NOTICE, ralat pemberitahuan, seperti pembolehubah akses yang tidak ditentukan, dsb., boleh diabaikan

1.5 E_STRICT, ralat yang dicadangkan, seperti menggunakan fungsi lapuk, boleh diabaikan.

Berdasarkan keperluan projek, tahap ralat yang berbeza boleh ditetapkan mengikut situasi tertentu.

Menggunakan fungsi pengendalian ralat PHP
  1. PHP menyediakan fungsi set_error_handler() untuk menetapkan fungsi pengendalian ralat tersuai. Tetapkan fungsi pengendalian ralat melalui fungsi ini Apabila ralat berlaku, fungsi pemprosesan yang sepadan akan dicetuskan secara automatik dan maklumat ralat akan dihantar ke fungsi pemprosesan. Pembangun boleh mendapatkan maklumat ralat melalui fungsi pemprosesan dan log maklumat ralat ke fail log ralat.

Berikut ialah kod sampel ringkas:

Dalam kod di atas, fungsi pengendalian ralat tersuai errorHandler() ditetapkan melalui fungsi set_error_handler(). Apabila ralat berlaku, PHP memanggil fungsi errorHandler() , menghantar empat parameter: nombor ralat, mesej ralat, fail ralat dan nombor baris ralat. Susun teks log ralat dalam fungsi errorHandler() dan tulis pada fail log yang ditentukan menggunakan fungsi error_log(). Parameter kedua fungsi error_log() (di sini 3) menunjukkan menulis log ralat pada fail, dan parameter ketiga ialah laluan fail log ralat yang ditentukan.
function errorHandler($errno, $errmsg, $errfile, $errline) {
    $log = '[' . date('Y-m-d H:i:s') . '] ' . $errmsg . ' in file ' . $errfile . ' on line ' . $errline . PHP_EOL;
    error_log($log, 3, '/your/path/error.log');
}

set_error_handler('errorHandler');

Ralat pengoptimuman log
  1. Apabila merakam fail log ralat, beberapa pengoptimuman juga boleh dibuat untuk memenuhi keperluan projek dengan lebih baik.

3.1 Gunakan blok cuba-tangkap

Menggunakan blok cuba-tangkap dalam kod boleh menangkap maklumat ralat dengan berkesan semasa program berjalan dan mengendalikannya dengan sewajarnya.

Apabila ralat berlaku dalam blok kod, pengecualian akan dilemparkan dan dimasukkan ke dalam blok tangkapan. Maklumat ralat boleh dilog ke fail log ralat dalam blok tangkapan.
try {
    // 代码块
} catch (Exception $e) {
    // 异常处理逻辑
}

3.2 Merakam Timbunan Ralat

Jika fail log ralat projek perlu merekodkan maklumat yang lebih terperinci, maklumat tindanan ralat boleh direkodkan bersama. Fungsi debug_backtrace() disediakan dalam PHP untuk mendapatkan maklumat terperinci tentang ralat semasa.

Dalam kod di atas, maklumat tindanan ralat semasa diperoleh dengan memanggil fungsi debug_backtrace() dan direkodkan dalam fail log ralat.
function errorHandler($errno, $errmsg, $errfile, $errline) {
    $stack = debug_backtrace();
    $log = '[' . date('Y-m-d H:i:s') . '] ' . $errmsg . ' in file ' . $errfile . ' on line ' . $errline . PHP_EOL;
    foreach ($stack as $i => $trace) {
        if ($i == 0) {
            continue;
        }
        $log .= '#' . $i . ' ' . $trace['file'] . '(' . $trace['line'] . '): ';
        if (isset($trace['class'])) {
            $log .= $trace['class'] . '->';
        }
        $log .= $trace['function'] . '()' . PHP_EOL;
    }
    error_log($log, 3, '/your/path/error.log');
}

Ringkasan

Merakam fail log ralat dalam projek PHP sangat membantu untuk pembangunan dan penyelenggaraan kod. Artikel ini memperkenalkan cara merekod fail log ralat melalui fungsi pengendalian ralat PHP, dan secara ringkas memperkenalkan beberapa titik pengoptimuman semasa merakam fail log ralat. Pembangun boleh memilih penyelesaian yang sesuai untuk merekodkan fail log ralat berdasarkan keperluan projek mereka.

Atas ialah kandungan terperinci Bagaimana untuk mengendalikan fail 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