Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Nota pembangunan Golang: Bagaimana untuk melakukan pengelogan ralat yang berkesan

Nota pembangunan Golang: Bagaimana untuk melakukan pengelogan ralat yang berkesan

WBOY
WBOYasal
2023-11-22 18:48:371154semak imbas

Nota pembangunan Golang: Bagaimana untuk melakukan pengelogan ralat yang berkesan

Dengan populariti Golang dan pengembangan skop aplikasinya, semakin ramai pembangun telah mula memilih untuk menggunakan Golang bagi melaksanakan pelbagai aplikasi. Pengendalian ralat dan pembalakan adalah bahagian yang tidak dapat dielakkan dalam proses pembangunan. Pengendalian ralat dan pengelogan yang baik adalah cara penting untuk memastikan kestabilan dan kebolehpercayaan aplikasi. Artikel ini akan memperkenalkan cara melaksanakan pengelogan ralat yang berkesan dalam pembangunan Golang untuk meningkatkan kualiti kod dan kecekapan pembangunan.

1. Pengendalian ralat

  1. Jenis ralat

Dalam Golang, jenis ralat dilaksanakan dengan melaksanakan antara muka diluahkan. Jenis ralat yang berbeza biasanya diwakili oleh jenis ralat tersuai, seperti ralat rangkaian, ralat pengesahan data, dsb. Apabila mentakrifkan jenis ralat, anda perlu mempertimbangkan isu seperti tahap butiran mesej ralat dan sokongan berbilang bahasa untuk mesej ralat.

Kod contoh:

type MyError struct {
    ErrMsg string // 错误信息
}

func (e *MyError) Error() string {
    return e.ErrMsg
}
  1. Kaedah pengendalian ralat

Di Golang, terdapat kaedah pengendalian ralat biasa dua jenis: /recover dan error/return.

Apabila ralat maut berlaku dalam atur cara, fungsi panik boleh mencetuskan pengecualian masa jalan, menyebabkan atur cara ranap. Fungsi pulih boleh menangkap pengecualian ini dan melakukan beberapa pemprosesan khusus untuk mengelakkan ranap program. Walau bagaimanapun, kaedah ini hanya sesuai untuk mengendalikan beberapa ralat yang tidak dapat dipulihkan, seperti limpahan memori, dsb.

Cara yang betul untuk menangani ralat adalah dengan menggunakan mekanisme ralat/pemulangan. Iaitu, semasa pelaksanaan fungsi, jika ralat berlaku, nilai ralat dikembalikan dan pemanggil mengendalikan ralat. Dengan mentakrifkan jenis ralat tersuai dan mesej ralat, pemanggil dapat memahami dengan jelas jenis ralat dan maklumat ralat tertentu, dan boleh melakukan logik pemprosesan yang berbeza untuk jenis ralat yang berbeza.

Contoh kod:

func ParseInt(str string) (int, error) {
    num, err := strconv.Atoi(str)
    if err != nil {
        return 0, &MyError{ErrMsg: "无效的数字字符串"}
    }
    return num, nil
}

2. Pembalakan

  1. Pemilihan rangka kerja log
  2. #🎜 Golang mempunyai banyak rangka kerja pengelogan untuk dipilih, termasuk log perpustakaan standard, logrus dan zap perpustakaan pihak ketiga, dsb. Apabila memilih rangka kerja log, anda perlu mempertimbangkan faktor seperti prestasi log, kebolehbacaan dan kebolehskalaan, dan menilai berdasarkan situasi sebenar.

Dalam artikel ini, kami akan menggunakan logrus sebagai contoh untuk memperkenalkan cara log.

Tahap log
  1. Apabila mengelog, anda perlu memilih tahap log yang berbeza mengikut kepentingan dan kesegeraan log. Tahap log biasa termasuk:

Trace: Maklumat jejak, digunakan untuk menjejak trajektori berjalan program
  • Debug: Maklumat nyahpepijat, digunakan untuk nyahpepijat program# 🎜🎜 #
  • Maklumat: Maklumat am, digunakan untuk merekod maklumat penting semasa operasi program
  • Amaran: Maklumat amaran, digunakan untuk merekod beberapa keadaan tidak normal semasa operasi program, tetapi tidak menjejaskan operasi program # 🎜 🎜#
  • Ralat: Mesej ralat, digunakan untuk merekod mesej ralat program
  • Fatal: Mesej ralat serius, digunakan untuk merekodkan atur cara menghadapi ralat yang tidak boleh dipulihkan dan keluar dari program #🎜 🎜## 🎜🎜#
  • Mengikut senario aplikasi dan keperluan pembangunan yang berbeza, anda boleh memilih tahap log yang sepadan.
  • Kod contoh:
  • import "github.com/sirupsen/logrus"
    
    func main() {
        logrus.SetLevel(logrus.DebugLevel)
        logrus.WithFields(logrus.Fields{
            "key1": "value1",
            "key2": "value2",
        }).Debug("这是一条Debug日志")
    }
Format log

Apabila mengelog, anda boleh memilih keperluan yang berbeza mengikut keperluan tertentu format log. Format log biasa termasuk json, xml, yaml, dsb. Apabila menggunakan logrus untuk pengelogan, format teks digunakan secara lalai. Format log boleh diubah suai dengan menukar Pemformat.

    Kod contoh:
  1. import (
        "os"
        "github.com/sirupsen/logrus"
    )
    
    func main() {
        logrus.SetOutput(os.Stdout)
        logrus.SetFormatter(&logrus.JSONFormatter{})
        logrus.WithFields(logrus.Fields{
            "key1": "value1",
            "key2": "value2",
        }).Info("这是一条Info日志")
    }
  2. Di atas adalah beberapa pertimbangan untuk pengelogan ralat yang berkesan dalam pembangunan Golang. Dalam pembangunan sebenar, pemilihan dan pelaksanaan yang munasabah perlu dibuat berdasarkan senario dan keperluan tertentu.

Atas ialah kandungan terperinci Nota pembangunan Golang: Bagaimana untuk melakukan pengelogan ralat yang berkesan. 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