第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 pgx 記錄查詢?

如何使用 pgx 記錄查詢?

Go
慕絲7291255 2022-07-11 15:07:22
如果我使用 pgx 池,我找不到如何記錄 sql 查詢的文檔。例如,我創(chuàng)建了這樣的池:func DB() *pgxpool.Pool {    connStr := os.Getenv("DATABASE_URL")    conn, err := pgxpool.Connect(context.Background(), connStr)    if err != nil {        fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err)        os.Exit(1)    }    return conn}請告訴我如何記錄我的查詢?
查看完整描述

2 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

我最終得到了以下解決方案:


func DB() *pgxpool.Pool {

    config, err := pgxpool.ParseConfig(connStr)

    if err != nil {

        fmt.Fprintf(os.Stderr, "Unable to parse config: %v\n", err)

        os.Exit(1)

    }

    looger := &log.Logger{

        Out:          os.Stderr,

        Formatter:    new(log.JSONFormatter),

        Hooks:        make(log.LevelHooks),

        Level:        log.InfoLevel,

        ExitFunc:     os.Exit,

        ReportCaller: false,

    }

    config.ConnConfig.Logger = logrusadapter.NewLogger(looger)

    conn, err := pgxpool.ConnectConfig(context.Background(), config)

    if err != nil {

        fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err)

        os.Exit(1)

    }

    return conn

}


查看完整回答
反對 回復 2022-07-11
?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

完全歸功于@mystdeim,他在上面回答了。


抄襲原因:進口說明清楚


為什么不只是評論?:我沒有 50 個代表


讓我們開始


原答案:


func DB() *pgxpool.Pool {

config, err := pgxpool.ParseConfig(connStr)

if err != nil {

    fmt.Fprintf(os.Stderr, "Unable to parse config: %v\n", err)

    os.Exit(1)

}

looger := &log.Logger{

    Out:          os.Stderr,

    Formatter:    new(log.JSONFormatter),

    Hooks:        make(log.LevelHooks),

    Level:        log.InfoLevel,

    ExitFunc:     os.Exit,

    ReportCaller: false,

}

config.ConnConfig.Logger = logrusadapter.NewLogger(looger)

conn, err := pgxpool.ConnectConfig(context.Background(), config)

if err != nil {

    fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err)

    os.Exit(1)

}

return conn

}

上面的代碼是可以的,但是我這里講兩點


進口:log

有一個令人困惑的導入log


讓我們仔細看看


    looger := &log.Logger{

    Out:          os.Stderr,

    Formatter:    new(log.JSONFormatter),

    Hooks:        make(log.LevelHooks),

    Level:        log.InfoLevel,

    ExitFunc:     os.Exit,

    ReportCaller: false,

}

config.ConnConfig.Logger = logrusadapter.NewLogger(looger)

首先,我們來談談log包導入。假設從最后一行開始,他正在使用logrus


所以


import (

"log"

)

是不可能的,因為你會失去logrus那時的力量。


現(xiàn)在,如果您使用重命名logrus為log


import (

log "github.com/sirupsen/logrus"

)

它會產生另一個錯誤:


LstdFlags not declared by package logrus (UndeclaredImportedName)

進口logrusadapter

不再工作:


    import (

"github.com/jackc/pgx/log/logrusadapter"

)

正在工作:


        import (

"github.com/jackc/pgx/v4/log/logrusadapter"

)

[嗯,好像是2021年的v4,以后導入前一定要檢查你的版本]


我修改后的解決方案

你不需要remame logrus,保持原樣。


                import (

 "github.com/sirupsen/logrus"

 "github.com/jackc/pgx/v4/pgxpool"

"github.com/jackc/pgx/v4/log/logrusadapter"


)

最后


func DB() *pgxpool.Pool {

    config, err := pgxpool.ParseConfig(connStr)

    if err != nil {

        fmt.Fprintf(os.Stderr, "Unable to parse config: %v\n", err)

        os.Exit(1)

    }

    logrusLogger := &logrus.Logger{

    Out:          os.Stderr,

    Formatter:    new(logrus.JSONFormatter),

    Hooks:        make(logrus.LevelHooks),

    Level:        logrus.InfoLevel,

    ExitFunc:     os.Exit,

    ReportCaller: false,

   }

    config.ConnConfig.Logger = logrusadapter.NewLogger(logrusLogger)

    conn, err := pgxpool.ConnectConfig(context.Background(), config)

    if err != nil {

        fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err)

        os.Exit(1)

    }

    return conn

}


查看完整回答
反對 回復 2022-07-11
  • 2 回答
  • 0 關注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號