Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Melaksanakan Antara Muka io.Writer untuk Pengelogan MongoDB dalam Go?
Mewujudkan io.Writer Interface untuk MongoDB Log in Go
Pengenalan
In Go, log messages biasanya ditulis pada konsol atau fail. Walau bagaimanapun, anda juga boleh mengeluarkan log ke destinasi lain, seperti pangkalan data. Artikel ini meneroka cara untuk melaksanakan antara muka io.Writer untuk log masuk ke pangkalan data MongoDB.
Pelaksanaan
Untuk mencipta antara muka io.Writer untuk pengelogan MongoDB, kami mentakrifkan jenis tersuai yang melaksanakan antara muka io.Writer. Kaedah Write() jenis ini harus mencipta dokumen MongoDB baharu dengan kandungan kepingan bait dan menyimpannya ke pangkalan data.
Berikut ialah contoh pelaksanaan:
type MongoWriter struct { sess *mgo.Session } func (mw *MongoWriter) Write(p []byte) (n int, err error) { c := mw.sess.DB("").C("log") err = c.Insert(bson.M{ "created": time.Now(), "msg": string(p), }) if err != nil { return } return len(p), nil }
Penggunaan
Setelah MongoWriter ditakrifkan, anda boleh menggunakannya untuk menetapkan destinasi output untuk pembalak lalai atau tersuai logger:
// Set the default logger output to the MongoWriter log.SetOutput(mw) // Generate log messages that will be inserted into MongoDB log.Println("I'm the first log message.") // Create a custom logger with the MongoWriter mylogger := log.New(mw, "", 0) // Write log messages using the custom logger mylogger.Println("Custom logger message")
Mengendalikan Talian Baharu
Secara lalai, mesej log akan berakhir dengan baris baharu kerana log.Logger menambahkannya. Untuk mengelak daripada mengelog baris baharu, anda boleh mengubah suai kaedah Write() untuk memangkasnya:
func (mw *MongoWriter) Write(p []byte) (n int, err error) { origLen := len(p) if len(p) > 0 && p[len(p)-1] == '\n' { p = p[:len(p)-1] // Cut terminating newline } c := mw.sess.DB("").C("log") // ... the rest is the same return origLen, nil // Must return original length (we resliced p) }
Kesimpulan
Dengan melaksanakan antara muka io.Writer tersuai, anda boleh membuat dengan mudah pembalak yang mengeluarkan ke pangkalan data MongoDB. Ini membolehkan anda meneruskan mesej log untuk analisis atau perolehan kemudian.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Antara Muka io.Writer untuk Pengelogan MongoDB dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!