Heim > Backend-Entwicklung > Golang > Wie kann ich eine io.Writer-Schnittstelle in Go für die Protokollierung bei MongoDB implementieren?

Wie kann ich eine io.Writer-Schnittstelle in Go für die Protokollierung bei MongoDB implementieren?

DDD
Freigeben: 2024-11-26 15:52:10
Original
433 Leute haben es durchsucht

How Can I Implement an io.Writer Interface in Go for Logging to MongoDB?

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.")
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage