Jadual Kandungan
Melog menggunakan perpustakaan standard
Menggunakan perpustakaan pihak ketiga untuk mengelog

Cara log masuk golang

Apr 23, 2023 pm 04:35 PM

Golang ialah bahasa pengaturcaraan cekap yang lebih unggul daripada bahasa lain dalam banyak aspek. Pengelogan adalah tugas kritikal apabila ia datang untuk merekodkan gelagat aplikasi anda. Di Golang, pengelogan adalah penting untuk menyahpepijat dan menguji aplikasi.

Artikel ini akan memperkenalkan kaedah pembalakan di Golang. Kami akan membincangkan pembalak dalam perpustakaan standard serta perpustakaan pihak ketiga.

Melog menggunakan perpustakaan standard

Perpustakaan standard Golang mempunyai pakej yang dipanggil "log", yang menyediakan cara pengelogan yang mudah. Pakej ini menyediakan tiga peringkat pengelogan: Maklumat, Amaran dan Ralat.

Mula-mula anda perlu mengimport logger:

import "log"
  1. Rekod maklumat

Log maklumat dengan memanggil fungsi "log.Println()" . Ia log mesej ke output ralat standard.

log.Println("Record this info")

Kod ini akan mengeluarkan maklumat yang serupa dengan:

2019/11/22 20:04:14 Record this info
  1. Log amaran

Dengan memanggil "log.Println()" berfungsi untuk mencatat amaran. Ia mencatatkan amaran kepada ralat standard dan menambah "WARN" pada mesej.

log.Println("WARN: Warning message here")

Kod ini akan mengeluarkan mesej yang serupa dengan:

2019/11/22 20:05:20 WARN: Warning message here
  1. Log ralat

Dengan memanggil "log.Println() " berfungsi untuk log ralat. Ia mencatatkan ralat kepada ralat standard dan menambahkan "ERROR" pada mesej.

log.Panicln("ERROR: error message here")

Kod ini akan mengeluarkan maklumat yang serupa dengan yang berikut:

2019/11/22 20:06:28 ERROR: error message here
panic: ERROR: error message here

goroutine 1 [running]:
log.Panicln(0xc42000e170, 0x1, 0x1)
        /usr/local/go/src/log/log.go:341 +0xc4
main.main()
        /root/go/src/main.go:10 +0x55
exit status 2

Kod di atas akan menyebabkan atur cara panik. Apabila ralat berlaku, atur cara akan ditamatkan serta-merta selepas mengelog ralat dan mengeluarkan maklumat ralat terperinci.

Menggunakan perpustakaan pihak ketiga untuk mengelog

Fungsi pengelogan yang disediakan oleh perpustakaan standard mempunyai hadnya. Anda boleh menggunakan perpustakaan pihak ketiga untuk melanjutkan keupayaan pengelogan Memandangkan perpustakaan pengelogan pihak ketiga menyediakan ciri yang kaya, ia lebih praktikal untuk penyahpepijatan dan ujian aplikasi.

Di sini kita mengambil perpustakaan kelas "go-logging" sebagai contoh. Ia boleh merekodkan berbilang peringkat log (Maklumat, Amaran, Ralat dan Nyahpepijat).

Mula-mula pasang "go-logging":

go get github.com/op/go-logging

Import perpustakaan:

import (
     "github.com/op/go-logging"
     "os"
)
  1. Mulakan logger

Gunakan fungsi "logging.MustGetLogger()" untuk memulakan logger. Anda boleh menentukan nama sebagai parameter untuk mengenal pasti antara berbilang pembalak.

var log = logging.MustGetLogger("example")
  1. Tetapkan tahap log

Selepas memulakan pembalak, anda boleh menggunakan fungsi "log.SetLevel()" untuk menetapkan tahap log. Fungsi ini menerima parameter pengelogan jenis. Tahap (termasuk Nyahpepijat, Maklumat, Amaran dan Ralat).

logging.SetLevel(logging.DEBUG, "example")
  1. Buat logger fail

Buat logger fail dengan menggunakan fungsi "os.Create()":

logFile, err := os.Create("app.log")
if err != nil {
     log.Error("Cannot create log file", err)
}
defer logFile.Close()
  1. Buat Pemformat

Buat pemformat untuk memformat entri dalam fail log:

formatter := logging.MustStringFormatter(
"%{time:2006/01/02 15:04:05.000} %{shortfile} %{level:.6s} %{message}")
  1. Pelog Fail Konfigurasi

Buat pembalak fail melalui fungsi "logging.NewBackendFormatter()":

backend := logging.NewBackendFormatter(
 logging.NewLogBackend(logFile, "", 0),
 formatter)
  1. Tambahkan logger fail pada logger

Tambah Sebelum pembalak fail, anda perlu untuk membalut pembalak fail ke bahagian belakang:

logging.SetBackend(backend)

atau tambahkan berbilang pembalak:

logging.SetBackend(logging.MultiLogger(
     logging.MultiWriter(os.Stdout, logFile),
     logging.MultiWriter(os.Stderr, logFile),
))
  1. Rekod log

Anda kini boleh " log" maklumat log menggunakan tahap yang dilalui melalui pembalak:

log.Infof("This is a info message with %d", 123)
log.Warningf("This is a warning message with %s", "param")
log.Errorf("This is a error message with %v", err)

Kod di atas akan memformat log semasa ia dilog dan kemudian menulisnya ke fail log.

Ringkasan:

Pustaka standard Golang menyediakan kaedah pengelogan yang mudah. Walau bagaimanapun, menggunakan pustaka pihak ketiga memberi anda kawalan yang lebih besar ke atas tingkah laku dan format pembalak. Dengan menggunakan pustaka "log", anda boleh log berbilang peringkat log dan menulisnya ke fail.

Atas ialah kandungan terperinci Cara log masuk golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1545
276
Membangunkan pengendali Kubernet di mana sahaja Membangunkan pengendali Kubernet di mana sahaja Jul 25, 2025 am 02:38 AM

Cara yang paling berkesan untuk menulis Kubernetesoperator adalah untuk menggunakan Go untuk menggabungkan Kubebuilder dan pengawal-runtime. 1. Memahami corak pengendali: Tentukan sumber tersuai melalui CRD, tulis pengawal untuk mendengar perubahan sumber dan lakukan gelung perdamaian untuk mengekalkan keadaan yang diharapkan. 2. Gunakan Kubebuilder untuk memulakan projek dan membuat API untuk menghasilkan CRD, pengawal dan konfigurasi secara automatik. 3. Tentukan spec dan struktur status CRD dalam API/V1/MYAPP_TYPES.GO, dan menjalankan makeManifests untuk menjana cRDYAML. 4. Daftar masuk dalam pengawal

Bagaimana untuk pulih dari panik dalam perjalanan? Bagaimana untuk pulih dari panik dalam perjalanan? Jul 23, 2025 am 04:11 AM

Panik adalah seperti program "serangan jantung" di Go. Pulih boleh digunakan sebagai "alat pertolongan cemas" untuk mencegah kemalangan, tetapi pulih hanya berkuatkuasa dalam fungsi penangguhan. 1.Recover digunakan untuk mengelakkan kelewatan perkhidmatan, log log, dan kesilapan yang mesra. 2. Ia mesti digunakan bersempena dengan menangguhkan dan hanya berkuatkuasa pada goroutine yang sama. Program ini tidak kembali ke titik panik selepas pemulihan. 3. Adalah disyorkan untuk menggunakannya di peringkat atas atau pintu masuk kritikal, dan tidak menyalahgunakannya, dan memberi keutamaan untuk menggunakan pemprosesan ralat. 4. Corak umum adalah untuk merangkum fungsi Saferun untuk membungkus logik panik yang mungkin. Hanya dengan menguasai senario penggunaannya dan batasan boleh memainkan peranannya dengan betul.

Peruntukan timbunan vs timbunan dengan petunjuk di Go Peruntukan timbunan vs timbunan dengan petunjuk di Go Jul 23, 2025 am 04:14 AM

Peruntukan Stack sesuai untuk pembolehubah tempatan kecil dengan kitaran hayat yang jelas, dan diuruskan secara automatik, dengan kelajuan yang cepat tetapi banyak sekatan; Peruntukan timbunan digunakan untuk data dengan kitaran hayat yang panjang atau tidak pasti, dan fleksibel tetapi mempunyai kos prestasi. Pengkompil GO secara automatik menentukan kedudukan peruntukan pembolehubah melalui analisis melarikan diri. Jika pembolehubah boleh melarikan diri dari skop fungsi semasa, ia akan diperuntukkan kepada timbunan. Situasi biasa yang menyebabkan melarikan diri termasuk: mengembalikan penunjuk pembolehubah tempatan, memberikan nilai kepada jenis antara muka, dan lulus dalam goroutine. Hasil analisis melarikan diri dapat dilihat melalui -gcflags = " -m". Apabila menggunakan petunjuk, anda harus memberi perhatian kepada kitaran hidup yang berubah -ubah untuk mengelakkan pelarian yang tidak perlu.

Pergi untuk pengkomputeran saintifik dan analisis berangka Pergi untuk pengkomputeran saintifik dan analisis berangka Jul 23, 2025 am 01:53 AM

GO Language boleh digunakan untuk pengiraan saintifik dan analisis berangka, tetapi perlu difahami. Kelebihannya terletak pada sokongan dan prestasi konkurensi, yang sesuai untuk algoritma selari seperti penyelesaian yang diedarkan, simulasi Monte Carlo, dan sebagainya; Perpustakaan komuniti seperti gonum dan MAT64 menyediakan fungsi pengiraan numerik asas; Pengaturcaraan hibrid boleh digunakan untuk memanggil C/C dan Python melalui CGO atau antara muka untuk meningkatkan kepraktisan. Batasannya adalah bahawa ekosistem tidak matang seperti python, visualisasi dan alat lanjutan lebih lemah, dan beberapa dokumen perpustakaan tidak lengkap. Adalah disyorkan untuk memilih senario yang sesuai berdasarkan ciri GO dan merujuk kepada contoh kod sumber untuk menggunakannya secara mendalam.

Pergi dengan contoh contoh pembalakan middleware http Pergi dengan contoh contoh pembalakan middleware http Aug 03, 2025 am 11:35 AM

HTTP Log Middleware di GO boleh merakam kaedah permintaan, laluan, IP klien dan memakan masa. 1. Gunakan http.handlerfunc untuk membungkus pemproses, 2. Rekod waktu mula dan masa akhir sebelum dan selepas memanggil next.servehttp, 3. Dapatkan IP pelanggan sebenar melalui r.remoteaddr dan X-forward-for headers, 4. Gunakan log.printf untuk mengeluarkan log permintaan, 5. Kod sampel lengkap telah disahkan untuk dijalankan dan sesuai untuk memulakan projek kecil dan sederhana. Cadangan lanjutan termasuk menangkap kod status, menyokong log JSON dan meminta penjejakan ID.

Membaca dari Stdin dalam Contoh Membaca dari Stdin dalam Contoh Jul 27, 2025 am 04:15 AM

Gunakan fmt.scanf untuk membaca input diformat, sesuai untuk data berstruktur yang mudah, tetapi rentetan dipotong ketika menghadapi ruang; 2. Adalah disyorkan untuk menggunakan bufio.scanner untuk membaca garis demi baris, menyokong input berbilang baris, pengesanan EOF dan input saluran paip, dan boleh mengendalikan kesilapan pengimbasan; 3. Gunakan io.readall (os.stdin) untuk membaca semua input sekaligus, sesuai untuk memproses data blok besar atau aliran fail; 4. Sambutan utama masa nyata memerlukan perpustakaan pihak ketiga seperti golang.org/x/term, dan Bufio mencukupi untuk senario konvensional; Cadangan Praktikal: Gunakan fmt.scan untuk input mudah interaktif, gunakan bufio.scanner untuk input baris atau saluran paip, gunakan io.readall untuk data blok besar, dan sentiasa mengendalikan

Bagaimanakah pernyataan suis berfungsi? Bagaimanakah pernyataan suis berfungsi? Jul 30, 2025 am 05:11 AM

Pernyataan Switch GO tidak akan dilaksanakan sepanjang proses secara lalai dan secara automatik akan keluar selepas memadankan keadaan pertama. 1. Suis bermula dengan kata kunci dan boleh membawa satu atau tiada nilai; 2. Kes perlawanan dari atas ke bawah dalam urutan, hanya perlawanan pertama yang dijalankan; 3. Pelbagai syarat boleh disenaraikan oleh koma untuk memadankan kes yang sama; 4. Tidak perlu menambah rehat secara manual, tetapi boleh dipaksa melalui; 5.Default digunakan untuk kes -kes yang tidak dapat ditandingi, biasanya diletakkan pada akhir.

Pergi dengan contoh generik Pergi dengan contoh generik Jul 29, 2025 am 04:10 AM

Go Generik disokong sejak 1.18 dan digunakan untuk menulis kod generik untuk jenis selamat. 1. Fungsi generik printslice [tany] (s [] t) boleh mencetak kepingan mana -mana jenis, seperti [] int atau [] rentetan. 2. Melalui had bilangan kekangan jenis t ke jenis angka seperti int dan float, jumlah [tnumber] (slice [] t) t Summation selamat direalisasikan. 3. Struktur generik Typebox [Tany] struct {valuet} boleh merangkum sebarang nilai jenis dan digunakan dengan pembina kotak baru [Tany] (Vt)*. 4. Tambahkan set (vt) dan dapatkan () kaedah t untuk kotak [t] tanpa

See all articles