1
0
mirror of https://github.com/go-micro/go-micro.git synced 2025-09-16 08:36:30 +02:00

feat(logger): add logger option to all micro components (override DefaultLogger) closes #2556 (#2559)

* feat(logger): add logger option to all components

* fix: refactor api/rpc.go

* fix: refactor api/stream.go

* fix: api/options.go comment

* fix(logger): do not use logger.Helper internally

* fix(logger): fix comments

* fix(logger): use level.Enabled method

* fix: rename mlogger to log

* fix: run go fmt

* fix: log level

* fix: factories

Co-authored-by: Mohamed MHAMDI <mmhamdi@hubside.com>
Co-authored-by: Davincible <david.brouwer.99@gmail.com>
This commit is contained in:
Mohamed MHAMDI
2022-09-29 16:44:53 +02:00
committed by GitHub
parent 57a0ef5a0f
commit 1db36357d5
63 changed files with 818 additions and 673 deletions

View File

@@ -8,10 +8,11 @@ import (
"github.com/urfave/cli/v2"
"go-micro.dev/v4"
"go-micro.dev/v4/logger"
"go-micro.dev/v4/registry"
)
//Options for web
// Options for web
type Options struct {
Name string
Version string
@@ -37,6 +38,7 @@ type Options struct {
Registry registry.Registry
Service micro.Service
Logger logger.Logger
Secure bool
TLSConfig *tls.Config
@@ -63,6 +65,7 @@ func newOptions(opts ...Option) Options {
Service: micro.NewService(),
Context: context.TODO(),
Signal: true,
Logger: logger.DefaultLogger,
}
for _, o := range opts {
@@ -93,7 +96,7 @@ func Icon(ico string) Option {
}
}
//Id for Unique server id
// Id for Unique server id
func Id(id string) Option {
return func(o *Options) {
o.Id = id
@@ -121,7 +124,7 @@ func Address(a string) Option {
}
}
//Advertise The address to advertise for discovery - host:port
// Advertise The address to advertise for discovery - host:port
func Advertise(a string) Option {
return func(o *Options) {
o.Advertise = a
@@ -144,28 +147,28 @@ func Registry(r registry.Registry) Option {
}
}
//RegisterTTL Register the service with a TTL
// RegisterTTL Register the service with a TTL
func RegisterTTL(t time.Duration) Option {
return func(o *Options) {
o.RegisterTTL = t
}
}
//RegisterInterval Register the service with at interval
// RegisterInterval Register the service with at interval
func RegisterInterval(t time.Duration) Option {
return func(o *Options) {
o.RegisterInterval = t
}
}
//Handler for custom handler
// Handler for custom handler
func Handler(h http.Handler) Option {
return func(o *Options) {
o.Handler = h
}
}
//Server for custom Server
// Server for custom Server
func Server(srv *http.Server) Option {
return func(o *Options) {
o.Server = srv
@@ -257,3 +260,10 @@ func HandleSignal(b bool) Option {
o.Signal = b
}
}
// Logger sets the underline logger
func Logger(l logger.Logger) Option {
return func(o *Options) {
o.Logger = l
}
}

View File

@@ -13,8 +13,10 @@ import (
"time"
"github.com/urfave/cli/v2"
"go-micro.dev/v4"
"go-micro.dev/v4/logger"
log "go-micro.dev/v4/logger"
"go-micro.dev/v4/registry"
maddr "go-micro.dev/v4/util/addr"
"go-micro.dev/v4/util/backoff"
@@ -54,11 +56,13 @@ func (s *service) genSrv() *registry.Service {
var port string
var err error
logger := s.opts.Logger
// default host:port
if len(s.opts.Address) > 0 {
host, port, err = net.SplitHostPort(s.opts.Address)
if err != nil {
logger.Fatal(err)
logger.Log(log.FatalLevel, err)
}
}
@@ -68,13 +72,13 @@ func (s *service) genSrv() *registry.Service {
if len(s.opts.Advertise) > 0 {
host, port, err = net.SplitHostPort(s.opts.Advertise)
if err != nil {
logger.Fatal(err)
logger.Log(log.FatalLevel, err)
}
}
addr, err := maddr.Extract(host)
if err != nil {
logger.Fatal(err)
logger.Log(log.FatalLevel, err)
}
if strings.Count(addr, ":") > 0 {
@@ -120,6 +124,9 @@ func (s *service) register() error {
if s.srv == nil {
return nil
}
logger := s.opts.Logger
// default to service registry
r := s.opts.Service.Client().Options().Registry
// switch to option if specified
@@ -134,9 +141,7 @@ func (s *service) register() error {
// use RegisterCheck func before register
if err := s.opts.RegisterCheck(s.opts.Context); err != nil {
if logger.V(logger.ErrorLevel, logger.DefaultLogger) {
logger.Errorf("Server %s-%s register check error: %s", s.opts.Name, s.opts.Id, err)
}
logger.Logf(log.ErrorLevel, "Server %s-%s register check error: %s", s.opts.Name, s.opts.Id, err)
return err
}
@@ -195,6 +200,8 @@ func (s *service) start() error {
return err
}
logger := s.opts.Logger
s.opts.Address = l.Addr().String()
srv := s.genSrv()
srv.Endpoints = s.srv.Endpoints
@@ -221,9 +228,7 @@ func (s *service) start() error {
if s.static {
_, err := os.Stat(static)
if err == nil {
if logger.V(logger.InfoLevel, logger.DefaultLogger) {
logger.Infof("Enabling static file serving from %s", static)
}
logger.Logf(log.InfoLevel, "Enabling static file serving from %s", static)
s.mux.Handle("/", http.FileServer(http.Dir(static)))
}
}
@@ -255,9 +260,7 @@ func (s *service) start() error {
ch <- l.Close()
}()
if logger.V(logger.InfoLevel, logger.DefaultLogger) {
logger.Infof("Listening on %v", l.Addr().String())
}
logger.Logf(log.InfoLevel, "Listening on %v", l.Addr().String())
return nil
}
@@ -279,9 +282,7 @@ func (s *service) stop() error {
s.exit <- ch
s.running = false
if logger.V(logger.InfoLevel, logger.DefaultLogger) {
logger.Info("Stopping")
}
s.opts.Logger.Log(log.InfoLevel, "Stopping")
for _, fn := range s.opts.AfterStop {
if err := fn(); err != nil {
@@ -473,6 +474,7 @@ func (s *service) Run() error {
return err
}
logger := s.opts.Logger
// start the profiler
if s.opts.Service.Options().Profile != nil {
// to view mutex contention
@@ -485,7 +487,7 @@ func (s *service) Run() error {
}
defer func() {
if err := s.opts.Service.Options().Profile.Stop(); err != nil {
logger.Error(err)
logger.Log(log.ErrorLevel, err)
}
}()
}
@@ -505,14 +507,10 @@ func (s *service) Run() error {
select {
// wait on kill signal
case sig := <-ch:
if logger.V(logger.InfoLevel, logger.DefaultLogger) {
logger.Infof("Received signal %s", sig)
}
logger.Logf(log.InfoLevel, "Received signal %s", sig)
// wait on context cancel
case <-s.opts.Context.Done():
if logger.V(logger.InfoLevel, logger.DefaultLogger) {
logger.Info("Received context shutdown")
}
logger.Log(log.InfoLevel, "Received context shutdown")
}
// exit reg loop

View File

@@ -21,10 +21,10 @@ type Service interface {
Run() error
}
//Option for web
// Option for web
type Option func(o *Options)
//Web basic Defaults
// Web basic Defaults
var (
// For serving
DefaultName = "go-web"

View File

@@ -57,14 +57,14 @@ func testFunc() {
defer wg.Done()
err := s.Run()
if err != nil {
logger.Errorf("micro run error: %v", err)
logger.Logf(logger.ErrorLevel, "micro run error: %v", err)
}
}()
go func() {
defer wg.Done()
err := w.Run()
if err != nil {
logger.Errorf("web run error: %v", err)
logger.Logf(logger.ErrorLevel, "web run error: %v", err)
}
}()