github.com/gogf/gf@v1.16.9/os/glog/glog_logger_level.go (about) 1 // Copyright GoFrame Author(https://goframe.org). All Rights Reserved. 2 // 3 // This Source Code Form is subject to the terms of the MIT License. 4 // If a copy of the MIT was not distributed with this file, 5 // You can obtain one at https://github.com/gogf/gf. 6 7 package glog 8 9 import ( 10 "github.com/gogf/gf/errors/gcode" 11 "github.com/gogf/gf/errors/gerror" 12 "strings" 13 ) 14 15 // Note that the LEVEL_PANI and LEVEL_FATA levels are not used for logging output, 16 // but for prefix configurations. 17 const ( 18 LEVEL_ALL = LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT 19 LEVEL_DEV = LEVEL_ALL 20 LEVEL_PROD = LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT 21 LEVEL_NONE = 0 22 LEVEL_DEBU = 1 << iota // 8 23 LEVEL_INFO // 16 24 LEVEL_NOTI // 32 25 LEVEL_WARN // 64 26 LEVEL_ERRO // 128 27 LEVEL_CRIT // 256 28 LEVEL_PANI // 512 29 LEVEL_FATA // 1024 30 ) 31 32 // defaultLevelPrefixes defines the default level and its mapping prefix string. 33 var defaultLevelPrefixes = map[int]string{ 34 LEVEL_DEBU: "DEBU", 35 LEVEL_INFO: "INFO", 36 LEVEL_NOTI: "NOTI", 37 LEVEL_WARN: "WARN", 38 LEVEL_ERRO: "ERRO", 39 LEVEL_CRIT: "CRIT", 40 LEVEL_PANI: "PANI", 41 LEVEL_FATA: "FATA", 42 } 43 44 // levelStringMap defines level string name to its level mapping. 45 var levelStringMap = map[string]int{ 46 "ALL": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT, 47 "DEV": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT, 48 "DEVELOP": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT, 49 "PROD": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT, 50 "PRODUCT": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT, 51 "DEBU": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT, 52 "DEBUG": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT, 53 "INFO": LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT, 54 "NOTI": LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT, 55 "NOTICE": LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT, 56 "WARN": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT, 57 "WARNING": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT, 58 "ERRO": LEVEL_ERRO | LEVEL_CRIT, 59 "ERROR": LEVEL_ERRO | LEVEL_CRIT, 60 "CRIT": LEVEL_CRIT, 61 "CRITICAL": LEVEL_CRIT, 62 } 63 64 // SetLevel sets the logging level. 65 // Note that levels ` LEVEL_CRIT | LEVEL_PANI | LEVEL_FATA ` cannot be removed for logging content, 66 // which are automatically added to levels. 67 func (l *Logger) SetLevel(level int) { 68 l.config.Level = level | LEVEL_CRIT | LEVEL_PANI | LEVEL_FATA 69 } 70 71 // GetLevel returns the logging level value. 72 func (l *Logger) GetLevel() int { 73 return l.config.Level 74 } 75 76 // SetLevelStr sets the logging level by level string. 77 func (l *Logger) SetLevelStr(levelStr string) error { 78 if level, ok := levelStringMap[strings.ToUpper(levelStr)]; ok { 79 l.config.Level = level 80 } else { 81 return gerror.NewCodef(gcode.CodeInvalidParameter, `invalid level string: %s`, levelStr) 82 } 83 return nil 84 } 85 86 // SetLevelPrefix sets the prefix string for specified level. 87 func (l *Logger) SetLevelPrefix(level int, prefix string) { 88 l.config.LevelPrefixes[level] = prefix 89 } 90 91 // SetLevelPrefixes sets the level to prefix string mapping for the logger. 92 func (l *Logger) SetLevelPrefixes(prefixes map[int]string) { 93 for k, v := range prefixes { 94 l.config.LevelPrefixes[k] = v 95 } 96 } 97 98 // GetLevelPrefix returns the prefix string for specified level. 99 func (l *Logger) GetLevelPrefix(level int) string { 100 return l.config.LevelPrefixes[level] 101 } 102 103 // getLevelPrefixWithBrackets returns the prefix string with brackets for specified level. 104 func (l *Logger) getLevelPrefixWithBrackets(level int) string { 105 levelStr := "" 106 if s, ok := l.config.LevelPrefixes[level]; ok { 107 levelStr = "[" + s + "]" 108 } 109 return levelStr 110 }