diff --git a/ipn/ipnlocal/local.go b/ipn/ipnlocal/local.go index fe22df1ad..dde7a394d 100644 --- a/ipn/ipnlocal/local.go +++ b/ipn/ipnlocal/local.go @@ -1448,10 +1448,6 @@ func (b *LocalBackend) Start(opts ipn.Options) error { b.e.SetNetInfoCallback(b.setNetInfo) - if b.sockstatLogger != nil { - b.sockstatLogger.Start() - } - blid := b.backendLogID b.logf("Backend: logs: be:%v fe:%v", blid, opts.FrontendLogID) b.send(ipn.Notify{BackendLogID: &blid}) diff --git a/log/sockstatlog/logger.go b/log/sockstatlog/logger.go index 4d44d7d47..609c2e2c1 100644 --- a/log/sockstatlog/logger.go +++ b/log/sockstatlog/logger.go @@ -26,7 +26,7 @@ type Logger struct { ctx context.Context cancelFn context.CancelFunc - ticker time.Ticker + ticker *time.Ticker logf logger.Logf logbuffer *filch.Filch } @@ -52,7 +52,7 @@ type event struct { // NewLogger returns a new Logger that will store stats in logdir. // On platforms that do not support sockstat logging, a nil Logger will be returned. -// The returned Logger is not yet running. +// The returned Logger must be shut down with Shutdown when it is no longer needed. func NewLogger(logdir string, logf logger.Logf) (*Logger, error) { if !sockstats.IsAvailable { return nil, nil @@ -68,17 +68,17 @@ func NewLogger(logdir string, logf logger.Logf) (*Logger, error) { } ctx, cancel := context.WithCancel(context.Background()) - return &Logger{ + logger := &Logger{ ctx: ctx, cancelFn: cancel, - ticker: *time.NewTicker(pollPeriod), + ticker: time.NewTicker(pollPeriod), logf: logf, logbuffer: filch, - }, nil -} + } + + go logger.poll() -func (l *Logger) Start() { - go l.poll() + return logger, nil } // poll fetches the current socket stats at the configured time interval,