github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/service/log_register.go (about)

     1  // Copyright 2015 Keybase, Inc. All rights reserved. Use of
     2  // this source code is governed by the included BSD license.
     3  
     4  package service
     5  
     6  import (
     7  	"errors"
     8  
     9  	"github.com/keybase/client/go/logger"
    10  	keybase1 "github.com/keybase/client/go/protocol/keybase1"
    11  )
    12  
    13  type logRegister struct {
    14  	forwarder *logFwd
    15  	queue     *logQueue
    16  	logger    logger.Logger
    17  }
    18  
    19  func newLogRegister(fwd *logFwd, logger logger.Logger) *logRegister {
    20  	return &logRegister{
    21  		forwarder: fwd,
    22  		logger:    logger,
    23  	}
    24  }
    25  
    26  func (r *logRegister) RegisterLogger(arg keybase1.RegisterLoggerArg, ui *LogUI) error {
    27  	r.logger.Debug("Registering logger: %s @ level %d", arg.Name, arg.Level)
    28  	if r.queue != nil {
    29  		return errors.New("external logger already registered for this connection")
    30  	}
    31  
    32  	// create a new log queue and add it to the forwarder
    33  	r.queue = newLogQueue(arg.Name, arg.Level, ui)
    34  	r.forwarder.Add(r.queue)
    35  
    36  	r.logger.Debug("Registered logger: %s", r.queue)
    37  
    38  	return nil
    39  }
    40  
    41  func (r *logRegister) UnregisterLogger() {
    42  	if r.queue == nil {
    43  		return
    44  	}
    45  	// remove the log queue from the forwarder
    46  	r.logger.Debug("Unregistering logger: %s", r.queue)
    47  	r.forwarder.Remove(r.queue)
    48  	r.logger.Debug("Unregistered logger: %s", r.queue)
    49  }