2

データベースロガーを実装する方法の例を探していて、クエリのためにデータベーステーブルにandをuber-go.zip挿入します。(したがって、エンコードはありません)これまでにいくつかの例を見つけることができなかったので、ここから例を始めます:messagefields

zap フックのフィールドにアクセスするには?

しかし、コードは、それがすべきことを示唆しているようにも見えません。これが私の例です:

https://go.dev/play/p/9AugEsYwA-E

package main

import (
    "errors"
    "fmt"

    "go.uber.org/zap"
    "go.uber.org/zap/zapcore"
)

func main() {
    fmt.Println("Hello, 世界")
    l, _ := zap.NewProduction()
    logger := zap.New(&CqlLogCore{Core: l.Core()})

    logger.Info("some logging info",
        zap.Int("count", 17),
        zap.Error(errors.New("boom")))

}

type CqlLogCore struct {
    zapcore.Core
}

func (c *CqlLogCore) Write(entry zapcore.Entry, fields []zapcore.Field) error {
    fmt.Println("hi", entry, fields)
    return c.Core.Write(entry, fields)
}

「hi」を含むテスト ログ メッセージは stdout にダンプされません。誰かが間違っている場所、またはデータベースロガーの例を教えてください。

ありがとう!

4

1 に答える 1