Go: Mencipta Antara Muka io.Writer untuk Log ke MongoDB
Bagaimanakah anda boleh mengkonfigurasi log masuk Pergi ke output mesej ke pangkalan data? Secara khususnya, bolehkah anda melaksanakan antara muka io.Writer untuk log.New()?
Penyelesaian
Ya, anda boleh mencipta fungsi pengelogan pangkalan data tersuai. Begini cara untuk melaksanakannya:
import ( "io" "log" "gopkg.in/mgo.v2" ) 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 } func main() { // Get a MongoDB session sess, err := mgo.Dial("mongodb://localhost:27017") if err != nil { panic(err) } // Create a MongoWriter instance mw := &MongoWriter{sess} // Set the MongoWriter as the output for the default Logger log.SetOutput(mw) // Log a message that will be inserted into MongoDB log.Println("I'm the first log message.") }
Anda boleh menyesuaikan MongoWriter untuk mengawal format dan tingkah laku mesej yang dilog.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Antara Muka io.Writer dalam Go untuk Log ke MongoDB?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!