main.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package main
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "gorm.io/driver/mysql"
  5. "gorm.io/gorm"
  6. gormLogger "gorm.io/gorm/logger"
  7. user "iot_manager_service/app/user/dao"
  8. "iot_manager_service/config"
  9. _ "iot_manager_service/config"
  10. "iot_manager_service/router"
  11. "iot_manager_service/util/cache"
  12. "iot_manager_service/util/logger"
  13. "net/url"
  14. "time"
  15. )
  16. func main() {
  17. cfg := config.Instance()
  18. // 只在本地开调试模式
  19. if cfg.Logger.DbShowLog == 1 {
  20. gin.SetMode(gin.DebugMode)
  21. } else {
  22. gin.SetMode(gin.ReleaseMode)
  23. }
  24. logger.InitLog()
  25. // 实例化配置
  26. initDB()
  27. err := cache.InitRedis()
  28. if err != nil {
  29. panic(err)
  30. }
  31. engine := gin.Default()
  32. router.InitRouter(engine)
  33. if cfg.Logger.DbShowLog == 1 {
  34. println(gin.DebugMode + "当前为开发环境,会产生较多调试日志")
  35. } else {
  36. println(gin.ReleaseMode)
  37. }
  38. _ = engine.Run(config.Instance().Server.Address)
  39. }
  40. func initDB() {
  41. cfg := config.Instance()
  42. dsn := cfg.Database.Auth + ":" + cfg.Database.Password + "@tcp(" + cfg.Database.Host + ":" + cfg.Database.Port + ")/" + cfg.Database.Name + "?charset=utf8&parseTime=True" + "&loc=" + url.QueryEscape(cfg.Database.Timezone)
  43. // 如果是本地开发环境 则 打印gorm 查询日志到控制台
  44. logCfg := gormLogger.Interface(nil)
  45. if cfg.Logger.DbShowLog == 1 {
  46. logCfg = gormLogger.Default
  47. } else {
  48. logCfg = gormLogger.New(logger.Logger, gormLogger.Config{
  49. SlowThreshold: 200 * time.Millisecond,
  50. LogLevel: gormLogger.Error,
  51. Colorful: true,
  52. })
  53. }
  54. //logCfg = gormLogger.Default
  55. db, err := gorm.Open(mysql.New(mysql.Config{
  56. DSN: dsn,
  57. }), &gorm.Config{Logger: logCfg})
  58. if err != nil {
  59. panic(err)
  60. } else {
  61. sqlDB, err := db.DB()
  62. if err != nil {
  63. panic(err)
  64. }
  65. if err := sqlDB.Ping(); err != nil {
  66. panic(err)
  67. }
  68. sqlDB.SetMaxOpenConns(32)
  69. sqlDB.SetMaxOpenConns(5)
  70. sqlDB.SetConnMaxLifetime(time.Hour * 4) //括号里面是超时时间,要小于数据库的超时时间 返回 invalid connection的问题
  71. }
  72. user.InitDB(db)
  73. }