main.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. file "iot_manager_service/app/file/dao"
  8. user "iot_manager_service/app/user/dao"
  9. "iot_manager_service/config"
  10. _ "iot_manager_service/config"
  11. proto "iot_manager_service/proto"
  12. "iot_manager_service/router"
  13. "iot_manager_service/util/cache"
  14. "iot_manager_service/util/logger"
  15. "net/url"
  16. "time"
  17. )
  18. func main() {
  19. cfg := config.Instance()
  20. // 只在本地开调试模式
  21. if cfg.Logger.DbShowLog == 1 {
  22. gin.SetMode(gin.DebugMode)
  23. } else {
  24. gin.SetMode(gin.ReleaseMode)
  25. }
  26. logger.InitLog()
  27. // 实例化配置
  28. initDB()
  29. err := cache.InitRedis()
  30. if err != nil {
  31. panic(err)
  32. }
  33. engine := gin.Default()
  34. //放行静态文件
  35. engine.Static("/icons", "./resource/icons")
  36. router.InitRouter(engine)
  37. if cfg.Logger.DbShowLog == 1 {
  38. println(gin.DebugMode + "当前为开发环境,会产生较多调试日志")
  39. } else {
  40. println(gin.ReleaseMode)
  41. }
  42. //开启grpc服务
  43. go proto.InitGrpcServer()
  44. _ = engine.Run(config.Instance().Server.Address)
  45. }
  46. func initDB() {
  47. cfg := config.Instance()
  48. 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)
  49. // 如果是本地开发环境 则 打印gorm 查询日志到控制台
  50. logCfg := gormLogger.Interface(nil)
  51. if cfg.Logger.DbShowLog == 1 {
  52. logCfg = gormLogger.Default
  53. } else {
  54. logCfg = gormLogger.New(logger.Logger, gormLogger.Config{
  55. SlowThreshold: 200 * time.Millisecond,
  56. LogLevel: gormLogger.Error,
  57. Colorful: true,
  58. })
  59. }
  60. //logCfg = gormLogger.Default
  61. db, err := gorm.Open(mysql.New(mysql.Config{
  62. DSN: dsn,
  63. }), &gorm.Config{Logger: logCfg})
  64. if err != nil {
  65. panic(err)
  66. } else {
  67. sqlDB, err := db.DB()
  68. if err != nil {
  69. panic(err)
  70. }
  71. if err := sqlDB.Ping(); err != nil {
  72. panic(err)
  73. }
  74. sqlDB.SetMaxOpenConns(32)
  75. sqlDB.SetMaxOpenConns(5)
  76. sqlDB.SetConnMaxLifetime(time.Hour * 4) //括号里面是超时时间,要小于数据库的超时时间 返回 invalid connection的问题
  77. }
  78. user.InitDB(db)
  79. file.InitDB(db)
  80. }