Skip to content

Commit

Permalink
feat: add stdout logger
Browse files Browse the repository at this point in the history
  • Loading branch information
MuZhou233 committed Jun 11, 2024
1 parent b5850e5 commit b0427ef
Show file tree
Hide file tree
Showing 7 changed files with 105 additions and 15 deletions.
5 changes: 4 additions & 1 deletion app/mapper/cmd/mapper/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,10 @@ func main() {
}

var bc conf.Mapper
appSettings.LoadConfig(&bc)
err = appSettings.LoadConfig(&bc)
if err != nil {
panic(err)
}

app, cleanup, err := wireApp(bc.GetServer(), bc.GetData(), bc.GetConsul(), appSettings)
if err != nil {
Expand Down
5 changes: 4 additions & 1 deletion app/miner/cmd/miner/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,10 @@ func main() {
}

var bc conf.Miner
appSettings.LoadConfig(&bc)
err = appSettings.LoadConfig(&bc)
if err != nil {
panic(err)
}

app, cleanup, err := wireApp(bc.GetServer(), bc.GetData(), bc.GetConsul(), appSettings)
if err != nil {
Expand Down
5 changes: 4 additions & 1 deletion app/searcher/cmd/searcher/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,10 @@ func main() {
}

var bc conf.Searcher
appSettings.LoadConfig(&bc)
err = appSettings.LoadConfig(&bc)
if err != nil {
panic(err)
}

app, cleanup, err := wireApp(bc.GetServer(), bc.GetData(), bc.GetConsul(), appSettings)
if err != nil {
Expand Down
5 changes: 4 additions & 1 deletion app/sephirah/cmd/sephirah/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,10 @@ func main() {
}

var bc conf.Sephirah
appSettings.LoadConfig(&bc)
err = appSettings.LoadConfig(&bc)
if err != nil {
panic(err)
}

app, cleanup, err := wireApp(
bc.GetServer(),
Expand Down
75 changes: 69 additions & 6 deletions cmd/librarian/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,15 @@ import (
"github.com/tuihub/librarian/internal/lib/libmq"
"github.com/tuihub/librarian/internal/lib/libobserve"
"github.com/tuihub/librarian/internal/lib/libsentry"
"github.com/tuihub/librarian/internal/lib/libzap"
miner "github.com/tuihub/protos/pkg/librarian/miner/v1"
searcher "github.com/tuihub/protos/pkg/librarian/searcher/v1"

"github.com/go-kratos/kratos/v2"
"github.com/go-kratos/kratos/v2/transport/grpc"
"github.com/go-kratos/kratos/v2/transport/http"
"github.com/google/wire"
"go.uber.org/zap"
)

// go build -ldflags "-X main.version=x.y.z".
Expand Down Expand Up @@ -65,26 +67,36 @@ func newApp(
}

func main() {
stdLogger := libzap.NewStdout(libzap.InfoLevel).Sugar()
stdLogger.Infof("=== Configuring ===")
stdLogger.Infof("[Service] Name: %s", name)
stdLogger.Infof("[Service] Version: %s", version)
appSettings, err := libapp.NewAppSettings(id, name, version, protoVersion, date)
if err != nil {
panic(err)
stdLogger.Fatalf("Initialize failed: %v", err)
}

var bc conf.Librarian
appSettings.LoadConfig(&bc)
err = appSettings.LoadConfig(&bc)
if err != nil {
stdLogger.Fatalf("Load config failed: %v", err)
}
logConfigDigest(&bc, stdLogger)

if bc.GetEnableServiceDiscovery() == nil {
bc.EnableServiceDiscovery = new(conf.Librarian_EnableServiceDiscovery)
}

stdLogger.Infof("=== Initializing ===")

err = libobserve.InitOTEL(bc.GetOtlp())
if err != nil {
panic(err)
stdLogger.Fatalf("Initialize OTLP client failed: %v", err)
}

err = libsentry.InitSentry(bc.GetSentry())
if err != nil {
panic(err)
stdLogger.Fatalf("Initialize Sentry client failed: %v", err)
}

app, cleanup, err := wireApp(
Expand All @@ -103,13 +115,14 @@ func main() {
appSettings,
)
if err != nil {
panic(err)
stdLogger.Fatalf("Initialize failed: %v", err)
}
defer cleanup()

// start and wait for stop signal
stdLogger.Infof("=== Start Service ===")
if err = app.Run(); err != nil {
panic(err)
stdLogger.Fatalf("Exit with error: %v", err)
}
}

Expand Down Expand Up @@ -145,3 +158,53 @@ func minerClientSelector(
}
return inproc.Miner, nil
}

func logConfigDigest(bc *conf.Librarian, logger *zap.SugaredLogger) { //nolint:gocognit // no need
if bc == nil {
logger.Warnf("Config not specified")
return
}
if bc.GetServer() == nil {
logger.Warnf("[Server\t] Not specified")
} else {
if bc.GetServer().GetInfo() != nil && len(bc.GetServer().GetInfo().GetName()) > 0 {
logger.Infof("[Server\t] Name: %s", bc.GetServer().GetInfo().GetName())
}
if bc.GetServer().GetGrpc() != nil {
logger.Infof("[Server\t] Listen gRPC on: %s", bc.GetServer().GetGrpc().GetAddr())
}
if bc.GetServer().GetGrpcWeb() != nil {
logger.Infof("[Server\t] Listen gRPC-Web on: %s", bc.GetServer().GetGrpcWeb().GetAddr())
}
}
if bc.GetDatabase() == nil || len(bc.GetDatabase().GetDriver()) == 0 {
logger.Warnf("[DB\t\t] Not specified")
} else {
logger.Infof("[DB\t\t] Configured - Driver %s", bc.GetDatabase().GetDriver())
}
if bc.GetMq() == nil || len(bc.GetMq().GetDriver()) == 0 {
logger.Warnf("[MQ\t\t] Not specified")
} else {
logger.Infof("[MQ\t\t] Configured - Driver %s", bc.GetMq().GetDriver())
}
if bc.GetCache() == nil || len(bc.GetCache().GetDriver()) == 0 {
logger.Warnf("[Cache\t] Not specified")
} else {
logger.Infof("[Cache\t] Configured - Driver %s", bc.GetCache().GetDriver())
}
if bc.GetConsul() == nil || len(bc.GetConsul().GetAddr()) == 0 {
logger.Warnf("[Consul\t] Not specified")
} else {
logger.Infof("[Consul\t] Configured")
}
if bc.GetSentry() == nil || len(bc.GetSentry().GetDsn()) == 0 {
logger.Warnf("[Sentry\t] Not specified")
} else {
logger.Infof("[Sentry\t] Configured")
}
if bc.GetOtlp() == nil || len(bc.GetOtlp().GetProtocol()) == 0 {
logger.Warnf("[OTLP\t] Not specified")
} else {
logger.Infof("[OTLP\t] Configured - Protocol %s", bc.GetOtlp().GetProtocol())
}
}
9 changes: 5 additions & 4 deletions internal/lib/libapp/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,9 @@ func NewAppSettings(id, name, version, protoVersion, date string) (*Settings, er
return &as, nil
}

func (a *Settings) LoadConfig(conf interface{}) {
func (a *Settings) LoadConfig(conf interface{}) error {
if a.ConfPath == "" {
return
return nil
}
c := config.New(
config.WithSource(
Expand All @@ -99,12 +99,13 @@ func (a *Settings) LoadConfig(conf interface{}) {
defer c.Close()

if err := c.Load(); err != nil {
panic(err)
return err
}

if err := c.Scan(conf); err != nil {
panic(err)
return err
}
return nil
}

func (a *Settings) Env(env Env) (string, error) {
Expand Down
16 changes: 15 additions & 1 deletion tests/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,18 @@ services:
image: redis:alpine
ports:
- "127.0.0.1:6379:6379"
restart: unless-stopped
restart: unless-stopped

otel-collector:
image: otel/opentelemetry-collector-contrib
volumes:
- ./data/otel-collector-config.yaml:/etc/otelcol-contrib/config.yaml
ports:
- "127.0.0.1:1888:1888" # pprof extension
- "127.0.0.1:8888:8888" # Prometheus metrics exposed by the Collector
- "127.0.0.1:8889:8889" # Prometheus exporter metrics
- "127.0.0.1:13133:13133" # health_check extension
- "127.0.0.1:4317:4317" # OTLP gRPC receiver
- "127.0.0.1:4318:4318" # OTLP http receiver
- "127.0.0.1:55679:55679" # zpages extension
restart: unless-stopped

0 comments on commit b0427ef

Please sign in to comment.