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 }