Apabila aplikasi terus berkembang dalam kerumitan, pembalakan menjadi semakin penting. Log boleh membantu pembangun mengenal pasti masalah dengan cepat dan menyelesaikannya dengan cepat, di samping menyediakan maklumat berguna tentang penggunaan aplikasi. Berdasarkan keperluan ini, pelbagai bahasa pengaturcaraan menyediakan perpustakaan dan rangka kerja untuk pembalakan. Golang tidak terkecuali Dalam artikel ini, kami akan meneroka penyelesaian menggunakan Golang untuk menulis log.
Perpustakaan pengelogan standard ialah perpustakaan terbina dalam di Golang yang menyokong output berformat dan kawalan tahap. Ia menyediakan tiga peringkat pengelogan: Nyahpepijat, Maklumat dan Ralat. Kod sampel untuk menggunakan perpustakaan ini adalah seperti berikut:
package main import ( "log" ) func main() { log.Println("This is a default message") log.SetFlags(log.Ldate | log.Ltime | log.Llongfile) log.Println("This is a formatted message") log.SetPrefix("[MyProg]") log.Println("This is a prefixed message") }
Dalam kod di atas, fungsi log.Println() digunakan untuk merekod log. Secara lalai, pengelogan akan dilakukan kepada output standard. Kandungan log boleh ditetapkan melalui fungsi log.SetFlags(). Anda boleh menambah awalan pada setiap mesej log menggunakan fungsi log.SetPrefix().
Kelebihan perpustakaan ini ialah ia mudah digunakan dan terbina dalam Golang, jadi ia tidak memerlukan alat atau rangka kerja lain. Namun begitu, kelemahan perpustakaan ini ialah ia kurang fleksibel dan tidak memenuhi keperluan aplikasi dengan baik.
logrus ialah perpustakaan pengelogan Golang yang popular dengan banyak ciri lanjutan. Ia menyediakan pelbagai peringkat pengelogan: Jejak, Nyahpepijat, Maklumat, Amaran, Ralat, Maut dan Panik. Logrus juga menyokong output kepada berbilang sasaran, seperti fail, rangkaian, log sistem, dsb. Kod sampel untuk menggunakan perpustakaan ini adalah seperti berikut:
package main import ( "github.com/sirupsen/logrus" "os" ) func main() { log := logrus.New() file, err := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY, 0666) if err == nil { log.Out = file } else { log.Info("Failed to log to file, using default stderr") } log.WithFields(logrus.Fields{ "animal": "walrus", "size": 10, }).Info("A walrus appears") log.WithFields(logrus.Fields{ "animal": "wombat", "size": 5, }).Warn("A wombat appears") }
Dalam kod di atas, tika logrus dicipta menggunakan fungsi logrus.New(). Kemudian, log ini ke fail dan log dua mesej log yang berbeza. Dalam setiap mesej log, gunakan fungsi log.WithFields() untuk menambah medan, dan kemudian gunakan fungsi log.Info() dan log.Warn() untuk log mesej masing-masing.
Logrus sangat fleksibel dan berskala, dan juga menyediakan pilihan format output yang kaya untuk pengelogan. Walau bagaimanapun, logrus bergantung pada perpustakaan pihak ketiga dan perlu dipasang secara manual menggunakan arahan go get.
Zap secara meluas dianggap sebagai salah satu perpustakaan pembalakan Golang terpantas. Matlamatnya adalah untuk menyediakan sokongan untuk pengelogan berprestasi tinggi sambil mengekalkan kemudahan penggunaan. Ia menyediakan pengelogan berbilang peringkat: Nyahpepijat, Maklumat, Amaran, Ralat dan DPanic. Zap juga menawarkan pengelogan berasaskan berstruktur, yang bermaksud data boleh ditambah pada mesej log dan diformatkan dalam format yang boleh dibaca dan dicari. Kod sampel untuk menggunakan perpustakaan ini adalah seperti berikut:
package main import ( "go.uber.org/zap" ) func main() { logger, _ := zap.NewDevelopment() defer logger.Sync() logger.Info("Zap is awesome", zap.String("animal", "walrus"), zap.Int("size", 10), ) logger.Warn("Watch out for the wombat", zap.String("animal", "wombat"), zap.String("location", "Australia"), ) }
Dalam kod di atas, fungsi zap.NewDevelopment() digunakan untuk mencipta tika Zap baharu dan kemudian merekodkan dua mesej log yang berbeza. Dalam setiap mesej log, tambahkan data berstruktur menggunakan fungsi zap.String() dan zap.Int().
Kelebihan Zap ialah prestasi tinggi dan kemudahan penggunaannya, serta sokongannya untuk data berstruktur. Walau bagaimanapun, Zap juga bergantung pada perpustakaan pihak ketiga, yang perlu dipasang secara manual menggunakan arahan go get.
Golang menyediakan banyak perpustakaan dan rangka kerja pembalakan yang berbeza. Pustaka pengelogan standard terbina dalam dan menyediakan fungsi pengelogan asas. Kedua-dua logrus dan zap ialah perpustakaan pihak ketiga yang popular yang menyokong pengelogan berbilang peringkat dan berstruktur serta memberikan fleksibiliti dan skalabiliti yang lebih besar. Skim pengelogan yang anda pilih bergantung pada pelbagai faktor, seperti keperluan aplikasi anda dan keperluan prestasi. Oleh itu, kebaikan dan keburukan setiap pilihan harus dipertimbangkan dan dinilai dengan teliti untuk mencari penyelesaian yang paling sesuai dengan aplikasi.
Atas ialah kandungan terperinci penyelesaian log golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!