glog_logger_level.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. // Copyright 2019 gf Author(https://github.com/gogf/gf). 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. "errors"
  9. "fmt"
  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_DEBU = 1 << iota // 8
  19. LEVEL_INFO // 16
  20. LEVEL_NOTI // 32
  21. LEVEL_WARN // 64
  22. LEVEL_ERRO // 128
  23. LEVEL_CRIT // 256
  24. LEVEL_PANI // 512
  25. LEVEL_FATA // 1024
  26. )
  27. // defaultLevelPrefixes defines the default level and its mapping prefix string.
  28. var defaultLevelPrefixes = map[int]string{
  29. LEVEL_DEBU: "DEBU",
  30. LEVEL_INFO: "INFO",
  31. LEVEL_NOTI: "NOTI",
  32. LEVEL_WARN: "WARN",
  33. LEVEL_ERRO: "ERRO",
  34. LEVEL_CRIT: "CRIT",
  35. LEVEL_PANI: "PANI",
  36. LEVEL_FATA: "FATA",
  37. }
  38. // levelStringMap defines level string name to its level mapping.
  39. var levelStringMap = map[string]int{
  40. "ALL": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  41. "DEV": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  42. "DEVELOP": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  43. "PROD": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  44. "PRODUCT": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  45. "DEBU": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  46. "DEBUG": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  47. "INFO": LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  48. "NOTI": LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  49. "NOTICE": LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  50. "WARN": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  51. "WARNING": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
  52. "ERRO": LEVEL_ERRO | LEVEL_CRIT,
  53. "ERROR": LEVEL_ERRO | LEVEL_CRIT,
  54. "CRIT": LEVEL_CRIT,
  55. "CRITICAL": LEVEL_CRIT,
  56. }
  57. // SetLevel sets the logging level.
  58. func (l *Logger) SetLevel(level int) {
  59. l.config.Level = level
  60. }
  61. // GetLevel returns the logging level value.
  62. func (l *Logger) GetLevel() int {
  63. return l.config.Level
  64. }
  65. // SetLevelStr sets the logging level by level string.
  66. func (l *Logger) SetLevelStr(levelStr string) error {
  67. if level, ok := levelStringMap[strings.ToUpper(levelStr)]; ok {
  68. l.config.Level = level
  69. } else {
  70. return errors.New(fmt.Sprintf(`invalid level string: %s`, levelStr))
  71. }
  72. return nil
  73. }
  74. // SetLevelPrefix sets the prefix string for specified level.
  75. func (l *Logger) SetLevelPrefix(level int, prefix string) {
  76. l.config.LevelPrefixes[level] = prefix
  77. }
  78. // SetLevelPrefixes sets the level to prefix string mapping for the logger.
  79. func (l *Logger) SetLevelPrefixes(prefixes map[int]string) {
  80. for k, v := range prefixes {
  81. l.config.LevelPrefixes[k] = v
  82. }
  83. }
  84. // GetLevelPrefix returns the prefix string for specified level.
  85. func (l *Logger) GetLevelPrefix(level int) string {
  86. return l.config.LevelPrefixes[level]
  87. }
  88. // getLevelPrefixWithBrackets returns the prefix string with brackets for specified level.
  89. func (l *Logger) getLevelPrefixWithBrackets(level int) string {
  90. if s, ok := l.config.LevelPrefixes[level]; ok {
  91. return "[" + s + "]"
  92. }
  93. return ""
  94. }