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  }