github.com/mavryk-network/mvgo@v1.19.9/cmd/tzcompose/log.go (about)

     1  // Copyright (c) 2023 Blockwatch Data Inc.
     2  // Author: alex@blockwatch.cc, abdul@blockwatch.cc
     3  
     4  package main
     5  
     6  import (
     7  	logpkg "github.com/echa/log"
     8  	"github.com/mavryk-network/mvgo/rpc"
     9  )
    10  
    11  var (
    12  	log        = logpkg.NewLogger("MAIN")
    13  	rpcLog     = logpkg.NewLogger("RPC ")
    14  	taskLog    = logpkg.NewLogger("TASK")
    15  	LevelTrace = logpkg.LevelTrace
    16  )
    17  
    18  // loggers maps each subsystem identifier to its associated logger.
    19  var loggers = map[string]logpkg.Logger{
    20  	"MAIN": log,
    21  	"RPC":  rpcLog,
    22  	"TASK": taskLog,
    23  }
    24  
    25  func initLogging() {
    26  	// assign default loggers
    27  	rpc.UseLogger(rpcLog)
    28  
    29  	// handle cli flags
    30  	var lvl logpkg.Level
    31  	switch {
    32  	case vtrace:
    33  		lvl = logpkg.LevelTrace
    34  	case vdebug:
    35  		lvl = logpkg.LevelDebug
    36  	case verbose:
    37  		lvl = logpkg.LevelInfo
    38  	default:
    39  		lvl = logpkg.LevelWarn
    40  	}
    41  	setLogLevels(lvl)
    42  }
    43  
    44  // setLogLevel sets the logging level for provided subsystem.  Invalid
    45  // subsystems are ignored.
    46  func setLogLevel(id string, level logpkg.Level) {
    47  	// Ignore invalid subsystems.
    48  	logger, ok := loggers[id]
    49  	if !ok {
    50  		return
    51  	}
    52  
    53  	logger.SetLevel(level)
    54  }
    55  
    56  // setLogLevels sets the log level for all subsystem loggers to the passed
    57  // level.
    58  func setLogLevels(level logpkg.Level) {
    59  	for id := range loggers {
    60  		setLogLevel(id, level)
    61  	}
    62  }