You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.6 KiB
Go
73 lines
1.6 KiB
Go
package service
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/tal-tech/go-zero/core/load"
|
|
"github.com/tal-tech/go-zero/core/logx"
|
|
"github.com/tal-tech/go-zero/core/prometheus"
|
|
"github.com/tal-tech/go-zero/core/stat"
|
|
"github.com/tal-tech/go-zero/core/trace/opentelemetry"
|
|
)
|
|
|
|
const (
|
|
// DevMode means development mode.
|
|
DevMode = "dev"
|
|
// TestMode means test mode.
|
|
TestMode = "test"
|
|
// RtMode means regression test mode.
|
|
RtMode = "rt"
|
|
// PreMode means pre-release mode.
|
|
PreMode = "pre"
|
|
// ProMode means production mode.
|
|
ProMode = "pro"
|
|
)
|
|
|
|
// A ServiceConf is a service config.
|
|
type ServiceConf struct {
|
|
Name string
|
|
Log logx.LogConf
|
|
Mode string `json:",default=pro,options=dev|test|rt|pre|pro"`
|
|
MetricsUrl string `json:",optional"`
|
|
Prometheus prometheus.Config `json:",optional"`
|
|
Telemetry opentelemetry.Config `json:",optional"`
|
|
}
|
|
|
|
// MustSetUp sets up the service, exits on error.
|
|
func (sc ServiceConf) MustSetUp() {
|
|
if err := sc.SetUp(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
// SetUp sets up the service.
|
|
func (sc ServiceConf) SetUp() error {
|
|
if len(sc.Log.ServiceName) == 0 {
|
|
sc.Log.ServiceName = sc.Name
|
|
}
|
|
if len(sc.Telemetry.Name) == 0 {
|
|
sc.Telemetry.Name = sc.Name
|
|
}
|
|
if err := logx.SetUp(sc.Log); err != nil {
|
|
return err
|
|
}
|
|
|
|
sc.initMode()
|
|
prometheus.StartAgent(sc.Prometheus)
|
|
opentelemetry.StartAgent(sc.Telemetry)
|
|
|
|
if len(sc.MetricsUrl) > 0 {
|
|
stat.SetReportWriter(stat.NewRemoteWriter(sc.MetricsUrl))
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (sc ServiceConf) initMode() {
|
|
switch sc.Mode {
|
|
case DevMode, TestMode, RtMode, PreMode:
|
|
load.Disable()
|
|
stat.SetReporter(nil)
|
|
}
|
|
}
|