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:
@@ -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
|
||||
}
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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"
|
||||
|
@@ -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)
|
||||
}
|
||||
}()
|
||||
|
||||
|
Reference in New Issue
Block a user