Go: Erstellen einer io.Writer-Schnittstelle für die Protokollierung in MongoDB
Wie können Sie die Protokollierung in Go konfigurieren, um Nachrichten an eine Datenbank auszugeben? Können Sie konkret eine io.Writer-Schnittstelle für log.New() implementieren?
Lösung
Ja, Sie können eine benutzerdefinierte Datenbankprotokollierungsfunktion erstellen. So implementieren Sie es:
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.") }
Sie können den MongoWriter anpassen, um das Format und Verhalten der protokollierten Nachrichten zu steuern.
Das obige ist der detaillierte Inhalt vonWie kann ich eine io.Writer-Schnittstelle in Go für die Protokollierung bei MongoDB implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!