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()
        },
1年前 评论
drom (楼主) 1年前
滚球兽进化 (作者) 1年前
drom (楼主) 1年前
讨论数量: 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()
        },
1年前 评论
drom (楼主) 1年前
滚球兽进化 (作者) 1年前
drom (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!