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  }