conf.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. // 通用配置
  12. LogLevel string
  13. FileLevel string
  14. LogPath string
  15. LastDay int
  16. ConsulPort int
  17. // 服务配置
  18. Login string
  19. Password string
  20. Database string
  21. Datasource string
  22. }
  23. func Run(name string) {
  24. data, err := os.ReadFile(fmt.Sprintf("serviceconf/%s.json", name))
  25. if err != nil {
  26. log.Fatalf("read config failed serviceconf/%s.json %v", name, err)
  27. }
  28. err = json.Unmarshal(data, &Server)
  29. if err != nil {
  30. log.Fatalf("Unmarshal config failed serviceconf/%s.json err:%v", name, err)
  31. }
  32. if Server.ConsulPort == 0 {
  33. Server.ConsulPort = 5500
  34. }
  35. if Server.LogPath == "" {
  36. Server.LogPath = fmt.Sprintf("log/%s", name)
  37. }
  38. logger, err := slog.New(Server.LogLevel, Server.FileLevel, Server.LogPath, log.LstdFlags)
  39. if err == nil {
  40. slog.Export(logger)
  41. }
  42. now := time.Now()
  43. Server.LastDay = now.Day()
  44. refreshLogFile()
  45. }
  46. func refreshLogFile() {
  47. time.AfterFunc(5*time.Minute, refreshLogFile)
  48. doRefreshLogFile()
  49. }
  50. func doRefreshLogFile() {
  51. if Server.LogPath != "" {
  52. now := time.Now()
  53. if now.Day() != Server.LastDay {
  54. Server.LastDay = now.Day()
  55. slog.RecreateFileLog(Server.LogPath, log.LstdFlags)
  56. }
  57. }
  58. }