完整的功劳归于@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的力量。
现在,如果您将 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,以后导入前一定要检查你的版本]
- 我修改后的解决方案
您无需重命名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
}
非常感谢@mystdeim 帮助我找到了一个好的日志系统