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
}

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
}
- 2 回答
- 0 關注
- 176 瀏覽
添加回答
舉報