github.com/myafeier/fabric@v1.0.1-0.20170722181825-3a4b1f2bce86/gossip/util/logging.go (about) 1 /* 2 Copyright IBM Corp. 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/hyperledger/fabric/common/flogging" 13 "github.com/op/go-logging" 14 ) 15 16 // Module names for logger initialization. 17 const ( 18 LoggingChannelModule = "gossip/channel" 19 LoggingCommModule = "gossip/comm" 20 LoggingDiscoveryModule = "gossip/discovery" 21 LoggingElectionModule = "gossip/election" 22 LoggingGossipModule = "gossip/gossip" 23 LoggingMockModule = "gossip/comm/mock" 24 LoggingPullModule = "gossip/pull" 25 LoggingServiceModule = "gossip/service" 26 LoggingStateModule = "gossip/state" 27 ) 28 29 var loggersByModules = make(map[string]*logging.Logger) 30 var lock = sync.Mutex{} 31 var testMode bool 32 33 // defaultTestSpec is the default logging level for gossip tests 34 var defaultTestSpec = "WARNING" 35 36 // GetLogger returns a logger for given gossip module and peerID 37 func GetLogger(module string, peerID string) *logging.Logger { 38 if peerID != "" && testMode { 39 module = module + "#" + peerID 40 } 41 42 lock.Lock() 43 defer lock.Unlock() 44 45 if lgr, ok := loggersByModules[module]; ok { 46 return lgr 47 } 48 49 // Logger doesn't exist, create a new one 50 lgr := flogging.MustGetLogger(module) 51 loggersByModules[module] = lgr 52 return lgr 53 } 54 55 // SetupTestLogging sets the default log levels for gossip unit tests 56 func SetupTestLogging() { 57 testMode = true 58 flogging.InitFromSpec(defaultTestSpec) 59 }