github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/gossip/util/logging.go (about) 1 /* 2 Copyright hechain. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package util 8 9 import ( 10 "sync" 11 12 "github.com/hechain20/hechain/common/flogging" 13 "go.uber.org/zap/zapcore" 14 ) 15 16 // Logger names for logger initialization. 17 const ( 18 ChannelLogger = "gossip.channel" 19 CommLogger = "gossip.comm" 20 DiscoveryLogger = "gossip.discovery" 21 ElectionLogger = "gossip.election" 22 GossipLogger = "gossip.gossip" 23 CommMockLogger = "gossip.comm.mock" 24 PullLogger = "gossip.pull" 25 ServiceLogger = "gossip.service" 26 StateLogger = "gossip.state" 27 PrivateDataLogger = "gossip.privdata" 28 ) 29 30 var ( 31 loggers = make(map[string]Logger) 32 lock = sync.Mutex{} 33 testMode bool 34 ) 35 36 // defaultTestSpec is the default logging level for gossip tests 37 var defaultTestSpec = "WARNING" 38 39 type Logger interface { 40 Debug(args ...interface{}) 41 Debugf(format string, args ...interface{}) 42 Error(args ...interface{}) 43 Errorf(format string, args ...interface{}) 44 Fatal(args ...interface{}) 45 Fatalf(format string, args ...interface{}) 46 Info(args ...interface{}) 47 Infof(format string, args ...interface{}) 48 Panic(args ...interface{}) 49 Panicf(format string, args ...interface{}) 50 Warning(args ...interface{}) 51 Warningf(format string, args ...interface{}) 52 IsEnabledFor(l zapcore.Level) bool 53 With(args ...interface{}) *flogging.FabricLogger 54 } 55 56 // GetLogger returns a logger for given gossip logger name and peerID 57 func GetLogger(name string, peerID string) Logger { 58 if peerID != "" && testMode { 59 name = name + "#" + peerID 60 } 61 62 lock.Lock() 63 defer lock.Unlock() 64 65 if lgr, ok := loggers[name]; ok { 66 return lgr 67 } 68 69 // Logger doesn't exist, create a new one 70 lgr := flogging.MustGetLogger(name) 71 loggers[name] = lgr 72 return lgr 73 } 74 75 // SetupTestLogging sets the default log levels for gossip unit tests to defaultTestSpec 76 func SetupTestLogging() { 77 SetupTestLoggingWithLevel(defaultTestSpec) 78 } 79 80 // SetupTestLoggingWithLevel sets the default log levels for gossip unit tests to level 81 func SetupTestLoggingWithLevel(level string) { 82 testMode = true 83 flogging.ActivateSpec(level) 84 }