mnet: better logging for MListen

This commit is contained in:
Brian Picciano 2019-01-12 21:01:16 -05:00
parent 57db101c02
commit fe07e1cfdc
2 changed files with 17 additions and 4 deletions

View File

@ -11,6 +11,11 @@ import (
"github.com/mediocregopher/mediocre-go-lib/mrun" "github.com/mediocregopher/mediocre-go-lib/mrun"
) )
type listener struct {
net.Listener
log *mlog.Logger
}
// MListen returns a Listener which will be initialized when the start event is // MListen returns a Listener which will be initialized when the start event is
// triggered on ctx (see mrun.Start), and closed when the stop event is // triggered on ctx (see mrun.Start), and closed when the stop event is
// triggered on ctx (see mrun.Stop). // triggered on ctx (see mrun.Stop).
@ -26,23 +31,30 @@ func MListen(ctx mctx.Context, network, defaultAddr string) net.Listener {
} }
addr := mcfg.String(ctx, "addr", defaultAddr, network+" address to listen on in format [host]:port. If port is 0 then a random one will be chosen") addr := mcfg.String(ctx, "addr", defaultAddr, network+" address to listen on in format [host]:port. If port is 0 then a random one will be chosen")
var l struct{ net.Listener } l := new(listener)
l.log = mlog.From(ctx).WithKV(l)
mrun.OnStart(ctx, func(mctx.Context) error { mrun.OnStart(ctx, func(mctx.Context) error {
var err error var err error
if l.Listener, err = net.Listen(network, *addr); err != nil { if l.Listener, err = net.Listen(network, *addr); err != nil {
return err return err
} }
mlog.From(ctx).Info("listening", mlog.KV{"addr": l.Addr()}) l.log.Info("listening")
return nil return nil
}) })
// TODO track connections and wait for them to complete before shutting // TODO track connections and wait for them to complete before shutting
// down? // down?
mrun.OnStop(ctx, func(mctx.Context) error { mrun.OnStop(ctx, func(mctx.Context) error {
l.log.Info("stopping listener")
return l.Close() return l.Close()
}) })
return &l return l
}
func (l *listener) KV() mlog.KV {
return mlog.KV{"addr": l.Addr().String()}
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////

View File

@ -38,7 +38,8 @@ func TestIsReservedIP(t *T) {
} }
func TestMListen(t *T) { func TestMListen(t *T) {
ctx := mctx.New() ctx := mctx.ChildOf(mctx.New(), "test")
l := MListen(ctx, "", "") l := MListen(ctx, "", "")
if err := mcfg.Populate(ctx, nil); err != nil { if err := mcfg.Populate(ctx, nil); err != nil {
t.Fatal(err) t.Fatal(err)