github.com/hyperledger-labs/bdls@v2.1.1+incompatible/common/flogging/levels.go (about) 1 /* 2 Copyright IBM Corp. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package flogging 8 9 import ( 10 "fmt" 11 "math" 12 13 "go.uber.org/zap/zapcore" 14 ) 15 16 const ( 17 // DisabledLevel represents a disabled log level. Logs at this level should 18 // never be emitted. 19 DisabledLevel = zapcore.Level(math.MinInt8) 20 21 // PayloadLevel is used to log the extremely detailed message level debug 22 // information. 23 PayloadLevel = zapcore.Level(zapcore.DebugLevel - 1) 24 ) 25 26 // NameToLevel converts a level name to a zapcore.Level. If the level name is 27 // unknown, zapcore.InfoLevel is returned. 28 func NameToLevel(level string) zapcore.Level { 29 l, err := nameToLevel(level) 30 if err != nil { 31 return zapcore.InfoLevel 32 } 33 return l 34 } 35 36 func nameToLevel(level string) (zapcore.Level, error) { 37 switch level { 38 case "PAYLOAD", "payload": 39 return PayloadLevel, nil 40 case "DEBUG", "debug": 41 return zapcore.DebugLevel, nil 42 case "INFO", "info": 43 return zapcore.InfoLevel, nil 44 case "WARNING", "WARN", "warning", "warn": 45 return zapcore.WarnLevel, nil 46 case "ERROR", "error": 47 return zapcore.ErrorLevel, nil 48 case "DPANIC", "dpanic": 49 return zapcore.DPanicLevel, nil 50 case "PANIC", "panic": 51 return zapcore.PanicLevel, nil 52 case "FATAL", "fatal": 53 return zapcore.FatalLevel, nil 54 55 case "NOTICE", "notice": 56 return zapcore.InfoLevel, nil // future 57 case "CRITICAL", "critical": 58 return zapcore.ErrorLevel, nil // future 59 60 default: 61 return DisabledLevel, fmt.Errorf("invalid log level: %s", level) 62 } 63 } 64 65 func IsValidLevel(level string) bool { 66 _, err := nameToLevel(level) 67 return err == nil 68 }