G02 Go API 实战 章节5.6:自定义数据库日志一直报错

1. 运行环境#

go1.18.4 darwin/arm64

mac m1 macos monterey12.5

2. 问题描述?#

自定义数据库日志报错,仔细对照和复制过教程内代码,保持一致

//代码位置:./bootstrap/database.go
database.Connect(dbConfig, logger.Default.LogMode(logger.Info))
//将上面代码改为如下就报错
database.Connect(dbConfig, logger.NewGormLogger())

报错异常截图

G02 Go API 实战 章节5.6:数据库日志一直报错

G02 Go API 实战 章节5.6:数据库日志一直报错

3. 您期望得到的结果?#

刚刚接触 go,能慢慢来顺利运行就好,哈哈

4. 您实际得到的结果?#

最佳答案

没有意外的话你这句有问题。应该是传了个 nil,导致后续使用的地方报错。

database.Connect(dbConfig, logger.NewGormLogger())

我看了看 github 上的代码的顺序是没有问题的,不确定你的有没有问题, bootstrap.SetupDB() 要在 bootstrap.SetupLogger() 后面,不然就有可能设置为 nil,导致后续用日志的地方报错。或者没有初始化日志也会有这个问题

PersistentPreRun: func(command *cobra.Command, args []string) {

            // 配置初始化,依赖命令行 --env 参数
            config.InitConfig(cmd.Env)

            // 初始化 Logger
            bootstrap.SetupLogger()

            // 初始化数据库
            bootstrap.SetupDB()

            // 初始化 Redis
            bootstrap.SetupRedis()

            // 初始化缓存
            bootstrap.SetupCache()
        },
2年前 评论
drom (楼主) 2年前
我们只希望世界和平 (作者) 2年前
drom (楼主) 2年前
讨论数量: 4

没有意外的话你这句有问题。应该是传了个 nil,导致后续使用的地方报错。

database.Connect(dbConfig, logger.NewGormLogger())

我看了看 github 上的代码的顺序是没有问题的,不确定你的有没有问题, bootstrap.SetupDB() 要在 bootstrap.SetupLogger() 后面,不然就有可能设置为 nil,导致后续用日志的地方报错。或者没有初始化日志也会有这个问题

PersistentPreRun: func(command *cobra.Command, args []string) {

            // 配置初始化,依赖命令行 --env 参数
            config.InitConfig(cmd.Env)

            // 初始化 Logger
            bootstrap.SetupLogger()

            // 初始化数据库
            bootstrap.SetupDB()

            // 初始化 Redis
            bootstrap.SetupRedis()

            // 初始化缓存
            bootstrap.SetupCache()
        },
2年前 评论
drom (楼主) 2年前
我们只希望世界和平 (作者) 2年前
drom (楼主) 2年前