Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Melaksanakan Antara Muka io.Writer dalam Go untuk Log ke MongoDB?

Bagaimanakah Saya Boleh Melaksanakan Antara Muka io.Writer dalam Go untuk Log ke MongoDB?

DDD
Lepaskan: 2024-11-26 15:52:10
asal
467 orang telah melayarinya

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

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.")
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan