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 }