serviceconf.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package service
  2. import (
  3. "log"
  4. "github.com/tal-tech/go-zero/core/load"
  5. "github.com/tal-tech/go-zero/core/logx"
  6. "github.com/tal-tech/go-zero/core/prometheus"
  7. "github.com/tal-tech/go-zero/core/stat"
  8. )
  9. const (
  10. // DevMode means development mode.
  11. DevMode = "dev"
  12. // TestMode means test mode.
  13. TestMode = "test"
  14. // RtMode means regression test mode.
  15. RtMode = "rt"
  16. // PreMode means pre-release mode.
  17. PreMode = "pre"
  18. // ProMode means production mode.
  19. ProMode = "pro"
  20. )
  21. // A ServiceConf is a service config.
  22. type ServiceConf struct {
  23. Name string
  24. Log logx.LogConf
  25. Mode string `json:",default=pro,options=dev|test|rt|pre|pro"`
  26. MetricsUrl string `json:",optional"`
  27. Prometheus prometheus.Config `json:",optional"`
  28. // TODO: enable it in v1.2.1
  29. // Telemetry opentelemetry.Config `json:",optional"`
  30. }
  31. // MustSetUp sets up the service, exits on error.
  32. func (sc ServiceConf) MustSetUp() {
  33. if err := sc.SetUp(); err != nil {
  34. log.Fatal(err)
  35. }
  36. }
  37. // SetUp sets up the service.
  38. func (sc ServiceConf) SetUp() error {
  39. if len(sc.Log.ServiceName) == 0 {
  40. sc.Log.ServiceName = sc.Name
  41. }
  42. if err := logx.SetUp(sc.Log); err != nil {
  43. return err
  44. }
  45. sc.initMode()
  46. prometheus.StartAgent(sc.Prometheus)
  47. // TODO: enable it in v1.2.1
  48. // if len(sc.Telemetry.Name) == 0 {
  49. // sc.Telemetry.Name = sc.Name
  50. // }
  51. // opentelemetry.StartAgent(sc.Telemetry)
  52. if len(sc.MetricsUrl) > 0 {
  53. stat.SetReportWriter(stat.NewRemoteWriter(sc.MetricsUrl))
  54. }
  55. return nil
  56. }
  57. func (sc ServiceConf) initMode() {
  58. switch sc.Mode {
  59. case DevMode, TestMode, RtMode, PreMode:
  60. load.Disable()
  61. stat.SetReporter(nil)
  62. }
  63. }