conf.go 1.1 KB

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