conf.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package config
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "log"
  6. "os"
  7. "time"
  8. slog "bet24.com/log"
  9. )
  10. var Server struct {
  11. LogLevel string
  12. FileLevel string
  13. LogPath string
  14. LastDay int
  15. ConsulPort int
  16. ChannelUrl string
  17. ChannelPassword string
  18. RedisDB int
  19. WebPort int
  20. WebKey string
  21. TlsPort int // HTTPS 端口
  22. TlsCert string // HTTPS 证书FILE
  23. TlsKey string // HTTPS 证书KEY
  24. Zego // 音视频信息
  25. }
  26. type Zego struct {
  27. AppId uint32 `json:"zego.appId"` // 用于标识访问者的身份
  28. ServerSecret string `json:"zego.serverSecret"` // 用于加密签名字符串和服务器验证签名字符串的密钥
  29. Callbacksecret string `json:"zego.callbackSecret"` // 服务端校验密钥
  30. }
  31. func Run(name string) {
  32. data, err := os.ReadFile(fmt.Sprintf("serviceconf/%s.json", name))
  33. if err != nil {
  34. log.Fatalf("read config failed serviceconf/%s.json %v", name, err)
  35. }
  36. err = json.Unmarshal(data, &Server)
  37. if err != nil {
  38. log.Fatalf("Unmarshal config failed serviceconf/%s.json err:%v", name, err)
  39. }
  40. if Server.ConsulPort == 0 {
  41. Server.ConsulPort = 5500
  42. }
  43. if Server.LogPath == "" {
  44. Server.LogPath = fmt.Sprintf("log/%s", name)
  45. }
  46. logger, err := slog.New(Server.LogLevel, Server.FileLevel, Server.LogPath, log.LstdFlags)
  47. if err == nil {
  48. slog.Export(logger)
  49. }
  50. now := time.Now()
  51. Server.LastDay = now.Day()
  52. refreshLogFile()
  53. }
  54. func refreshLogFile() {
  55. time.AfterFunc(5*time.Minute, refreshLogFile)
  56. doRefreshLogFile()
  57. }
  58. func doRefreshLogFile() {
  59. if Server.LogPath != "" {
  60. now := time.Now()
  61. if now.Day() != Server.LastDay {
  62. Server.LastDay = now.Day()
  63. slog.RecreateFileLog(Server.LogPath, log.LstdFlags)
  64. }
  65. }
  66. }