diff --git a/broker/broker.go b/broker/broker.go index 0e63507..ada6055 100644 --- a/broker/broker.go +++ b/broker/broker.go @@ -62,6 +62,10 @@ func newMessagePool() []chan *Message { } func NewBroker(config *Config) (*Broker, error) { + if config == nil { + config = DefaultConfig + } + b := &Broker{ id: GenUniqueId(), config: config, diff --git a/broker/config.go b/broker/config.go index addd5d5..dca2c86 100644 --- a/broker/config.go +++ b/broker/config.go @@ -54,7 +54,7 @@ var DefaultConfig *Config = &Config{ } var ( - log *zap.Logger + log = logger.Prod().Named("broker") ) func showHelp() { @@ -118,8 +118,9 @@ func ConfigureConfig(args []string) (*Config, error) { } } - logger.InitLogger(config.Debug) - log = logger.Get().Named("Broker") + if config.Debug { + log = logger.Debug().Named("broker") + } if err := config.check(); err != nil { return nil, err diff --git a/cmd/broker/main.go b/cmd/broker/main.go new file mode 100644 index 0000000..8a64600 --- /dev/null +++ b/cmd/broker/main.go @@ -0,0 +1,29 @@ +package main + +import ( + "log" + "os" + "os/signal" + + "github.com/fhmq/hmq/broker" +) + +func main() { + b, err := broker.NewBroker(nil) + if err != nil { + log.Fatal("New Broker error: ", err) + } + b.Start() + + s := waitForSignal() + log.Println("signal received, broker closed.", s) +} + +func waitForSignal() os.Signal { + signalChan := make(chan os.Signal, 1) + defer close(signalChan) + signal.Notify(signalChan, os.Kill, os.Interrupt) + s := <-signalChan + signal.Stop(signalChan) + return s +} diff --git a/logger/logger.go b/logger/logger.go index c55ac3a..9510e6e 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -29,28 +29,27 @@ func NewProdLogger() (*zap.Logger, error) { return logCfg.Build() } -func InitLogger(debug bool) { - var err error - var log *zap.Logger - if debug { - log, err = NewDevLogger() - } else { - log, err = NewProdLogger() - } - if err != nil { - panic("Unable to create a logger.") - } - defer log.Sync() +func Prod() *zap.Logger { - log.Debug("Logger initialization succeeded") - instance = log.Named("hmq") + l, _ := NewProdLogger() + instance = l + + return instance +} + +func Debug() *zap.Logger { + + l, _ := NewDevLogger() + instance = l + + return instance } -// Get return a *zap.Logger instance func Get() *zap.Logger { if instance == nil { l, _ := NewProdLogger() - return l + instance = l } + return instance }