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
Libérer: 2024-11-26 15:52:10
original
434 Les gens l'ont consulté

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.")
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal