glog_logger_level.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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. package glog
  7. import (
  8. "github.com/gogf/gf/errors/gcode"
  9. "github.com/gogf/gf/errors/gerror"
  10. "strings"
  11. )
  12. // Note that the LEVEL_PANI and LEVEL_FATA levels are not used for logging output,
  13. // but for prefix configurations.
  14. const (
  15. LEVEL_ALL = LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT
  16. LEVEL_DEV = LEVEL_ALL
  17. LEVEL_PROD = LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT
  18. LEVEL_NONE = 0
  19. LEVEL_DEBU = 1 << iota // 8
  20. LEVEL_INFO // 16
  21. LEVEL_NOTI // 32
  22. LEVEL_WARN // 64
  23. LEVEL_ERRO // 128
  24. LEVEL_CRIT // 256
  25. LEVEL_PANI // 512
  26. LEVEL_FATA // 1024
  27. )
  28. // defaultLevelPrefixes defines the default level and its mapping prefix string.
  29. var defaultLevelPrefixes = map[int]string{
  30. LEVEL_DEBU: "DEBU",
  31. LEVEL_INFO: "INFO",
  32. LEVEL_NOTI: "NOTI",
  33. LEVEL_WARN: "WARN",
  34. LEVEL_ERRO: "ERRO",
  35. LEVEL_CRIT: "CRIT",
  36. LEVEL_PANI: "PANI",
  37. LEVEL_FATA: "FATA",
  38. }
  39. // levelStringMap defines level string name to its level mapping.
  40. var levelStringMap = map[string]int{
  41. "ALL": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  42. "DEV": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  43. "DEVELOP": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  44. "PROD": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  45. "PRODUCT": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  46. "DEBU": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  47. "DEBUG": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  48. "INFO": LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  49. "NOTI": LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  50. "NOTICE": LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  51. "WARN": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  52. "WARNING": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  53. "ERRO": LEVEL_ERRO | LEVEL_CRIT,
  54. "ERROR": LEVEL_ERRO | LEVEL_CRIT,
  55. "CRIT": LEVEL_CRIT,
  56. "CRITICAL": LEVEL_CRIT,
  57. }
  58. // SetLevel sets the logging level.
  59. // Note that levels ` LEVEL_CRIT | LEVEL_PANI | LEVEL_FATA ` cannot be removed for logging content,
  60. // which are automatically added to levels.
  61. func (l *Logger) SetLevel(level int) {
  62. l.config.Level = level | LEVEL_CRIT | LEVEL_PANI | LEVEL_FATA
  63. }
  64. // GetLevel returns the logging level value.
  65. func (l *Logger) GetLevel() int {
  66. return l.config.Level
  67. }
  68. // SetLevelStr sets the logging level by level string.
  69. func (l *Logger) SetLevelStr(levelStr string) error {
  70. if level, ok := levelStringMap[strings.ToUpper(levelStr)]; ok {
  71. l.config.Level = level
  72. } else {
  73. return gerror.NewCodef(gcode.CodeInvalidParameter, `invalid level string: %s`, levelStr)
  74. }
  75. return nil
  76. }
  77. // SetLevelPrefix sets the prefix string for specified level.
  78. func (l *Logger) SetLevelPrefix(level int, prefix string) {
  79. l.config.LevelPrefixes[level] = prefix
  80. }
  81. // SetLevelPrefixes sets the level to prefix string mapping for the logger.
  82. func (l *Logger) SetLevelPrefixes(prefixes map[int]string) {
  83. for k, v := range prefixes {
  84. l.config.LevelPrefixes[k] = v
  85. }
  86. }
  87. // GetLevelPrefix returns the prefix string for specified level.
  88. func (l *Logger) GetLevelPrefix(level int) string {
  89. return l.config.LevelPrefixes[level]
  90. }
  91. // getLevelPrefixWithBrackets returns the prefix string with brackets for specified level.
  92. func (l *Logger) getLevelPrefixWithBrackets(level int) string {
  93. levelStr := ""
  94. if s, ok := l.config.LevelPrefixes[level]; ok {
  95. levelStr = "[" + s + "]"
  96. }
  97. return levelStr
  98. }