conf.go 1.2 KB

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