Maison >développement back-end >Golang >Comment puis-je implémenter une interface io.Writer dans Go pour la journalisation dans MongoDB ?

Comment puis-je implémenter une interface io.Writer dans Go pour la journalisation dans MongoDB ?

DDD
DDDoriginal
2024-11-26 15:52:10488parcourir

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

Go : création d'une interface io.Writer pour la journalisation dans MongoDB

Comment configurer la connexion Go pour afficher des messages dans une base de données ? Plus précisément, pouvez-vous implémenter une interface io.Writer pour log.New() ?

Solution

Oui, vous pouvez créer une fonction de journalisation de base de données personnalisée. Voici comment le mettre en œuvre :

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.")
}

Vous pouvez personnaliser MongoWriter pour contrôler le format et le comportement des messages enregistrés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn