github.com/intfoundation/intchain@v0.0.0-20220727031208-4316ad31ca73/log/logger_chain.go (about) 1 package log 2 3 import ( 4 "github.com/mattn/go-colorable" 5 "os" 6 "path/filepath" 7 "sync" 8 ) 9 10 var loggerMap sync.Map 11 12 func newChainLogger(chainID string) Logger { 13 14 chainLogger := &logger{[]interface{}{}, new(swapHandler)} 15 16 loggerMap.Store(chainID, chainLogger) 17 18 return chainLogger 19 } 20 21 // NewLogger Create a new Logger for a particular Chain and return it 22 func NewLogger(chainID, logDir string, logLevel int, fileLine bool, vmodule, backtrace string) Logger { 23 24 // logging 25 PrintOrigins(fileLine) 26 27 // Console Log 28 output := colorable.NewColorableStdout() 29 ostream := StreamHandler(output, TerminalFormat(true)) 30 glogger := NewGlogHandler(ostream) 31 32 // Normal Rotation Log 33 if logDir != "" { 34 // Sha3 PreImages Log 35 preimages_logDir := filepath.Join(logDir, "preimages") 36 if err := os.MkdirAll(preimages_logDir, 0700); err != nil { 37 panic(err) 38 } 39 preimageFileHandler := Must.FileHandler(filepath.Join(preimages_logDir, "preimages.log"), TerminalFormat(false)) 40 preimageFilter := MatchFilterHandler("module", "preimages", preimageFileHandler) 41 42 rfh, err := RotatingFileHandler( 43 logDir, 44 10*1024*1024, 45 TerminalFormat(false), 46 //JSONFormatOrderedEx(false, true), 47 ) 48 if err != nil { 49 panic(err) 50 } 51 glogger.SetHandler(MultiHandler(ostream, rfh, preimageFilter)) 52 } 53 glogger.Verbosity(Lvl(logLevel)) 54 glogger.Vmodule(vmodule) 55 glogger.BacktraceAt(backtrace) 56 57 var logger Logger 58 if chainID == "" { 59 logger = Root() 60 logger.SetHandler(glogger) 61 } else { 62 logger = newChainLogger(chainID) 63 logger.SetHandler(glogger) 64 } 65 66 return logger 67 } 68 69 // GetLogger Get Logger from stored map by using Chain ID 70 func GetLogger(chainID string) Logger { 71 logger, find := loggerMap.Load(chainID) 72 if find { 73 return logger.(Logger) 74 } else { 75 return nil 76 } 77 } 78 79 func RangeLogger(f func(key, value interface{}) bool) { 80 loggerMap.Range(f) 81 }