mirror of
https://gitee.com/johng/gf
synced 2026-07-02 19:31:07 +08:00
add level string feature for package glog
This commit is contained in:
@ -8,6 +8,7 @@ package glog
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/gogf/gf/internal/intlog"
|
||||
"github.com/gogf/gf/os/gfile"
|
||||
"github.com/gogf/gf/util/gconv"
|
||||
@ -81,13 +82,10 @@ func (l *Logger) SetConfigWithMap(m map[string]interface{}) error {
|
||||
// Change string configuration to int value for level.
|
||||
levelKey, levelValue := gutil.MapPossibleItemByKey(m, "level")
|
||||
if levelValue != nil {
|
||||
switch gconv.String(levelValue) {
|
||||
case "all":
|
||||
m[levelKey] = LEVEL_ALL
|
||||
case "dev":
|
||||
m[levelKey] = LEVEL_DEV
|
||||
case "prod":
|
||||
m[levelKey] = LEVEL_PROD
|
||||
if level, ok := levelStringMap[strings.ToUpper(gconv.String(levelValue))]; ok {
|
||||
m[levelKey] = level
|
||||
} else {
|
||||
return errors.New(fmt.Sprintf(`invalid level string: %v`, levelValue))
|
||||
}
|
||||
}
|
||||
config := DefaultConfig()
|
||||
@ -98,16 +96,6 @@ func (l *Logger) SetConfigWithMap(m map[string]interface{}) error {
|
||||
return l.SetConfig(config)
|
||||
}
|
||||
|
||||
// SetLevel sets the logging level.
|
||||
func (l *Logger) SetLevel(level int) {
|
||||
l.config.Level = level
|
||||
}
|
||||
|
||||
// GetLevel returns the logging level value.
|
||||
func (l *Logger) GetLevel() int {
|
||||
return l.config.Level
|
||||
}
|
||||
|
||||
// SetDebug enables/disables the debug level for logger.
|
||||
// The debug level is enabled in default.
|
||||
func (l *Logger) SetDebug(debug bool) {
|
||||
|
||||
@ -6,12 +6,22 @@
|
||||
|
||||
package glog
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Note that the LEVEL_PANI and LEVEL_FATA levels are not used for logging output,
|
||||
// but for prefix configurations.
|
||||
const (
|
||||
LEVEL_ALL = LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT
|
||||
LEVEL_DEV = LEVEL_ALL
|
||||
// Deprecated.
|
||||
LEVEL_ALL = LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT
|
||||
// Deprecated.
|
||||
LEVEL_DEV = LEVEL_ALL
|
||||
// Deprecated.
|
||||
LEVEL_PROD = LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT
|
||||
|
||||
LEVEL_DEBU = 1 << iota // 8
|
||||
LEVEL_INFO // 16
|
||||
LEVEL_NOTI // 32
|
||||
@ -34,6 +44,46 @@ var defaultLevelPrefixes = map[int]string{
|
||||
LEVEL_FATA: "FATA",
|
||||
}
|
||||
|
||||
// levelStringMap defines level string name to its level mapping.
|
||||
var levelStringMap = map[string]int{
|
||||
"ALL": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
|
||||
"DEV": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
|
||||
"DEVELOP": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
|
||||
"PROD": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
|
||||
"PRODUCT": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
|
||||
"DEBU": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
|
||||
"DEBUG": LEVEL_DEBU | LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
|
||||
"INFO": LEVEL_INFO | LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
|
||||
"NOTI": LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
|
||||
"NOTICE": LEVEL_NOTI | LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
|
||||
"WARN": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
|
||||
"WARNING": LEVEL_WARN | LEVEL_ERRO | LEVEL_CRIT,
|
||||
"ERRO": LEVEL_ERRO | LEVEL_CRIT,
|
||||
"ERROR": LEVEL_ERRO | LEVEL_CRIT,
|
||||
"CRIT": LEVEL_CRIT,
|
||||
"CRITICAL": LEVEL_CRIT,
|
||||
}
|
||||
|
||||
// SetLevel sets the logging level.
|
||||
func (l *Logger) SetLevel(level int) {
|
||||
l.config.Level = level
|
||||
}
|
||||
|
||||
// GetLevel returns the logging level value.
|
||||
func (l *Logger) GetLevel() int {
|
||||
return l.config.Level
|
||||
}
|
||||
|
||||
// SetLevelStr sets the logging level by level string.
|
||||
func (l *Logger) SetLevelStr(levelStr string) error {
|
||||
if level, ok := levelStringMap[strings.ToUpper(levelStr)]; ok {
|
||||
l.config.Level = level
|
||||
} else {
|
||||
return errors.New(fmt.Sprintf(`invalid level string: %s`, levelStr))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// SetLevelPrefix sets the prefix string for specified level.
|
||||
func (l *Logger) SetLevelPrefix(level int, prefix string) {
|
||||
l.config.LevelPrefixes[level] = prefix
|
||||
|
||||
@ -7,7 +7,9 @@
|
||||
package glog
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"github.com/gogf/gf/test/gtest"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@ -27,3 +29,37 @@ func Test_SetConfigWithMap(t *testing.T) {
|
||||
t.Assert(l.config.StdoutPrint, m["stdout"])
|
||||
})
|
||||
}
|
||||
|
||||
func Test_SetConfigWithMap_LevelStr(t *testing.T) {
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
buffer := bytes.NewBuffer(nil)
|
||||
l := New()
|
||||
m := map[string]interface{}{
|
||||
"level": "all",
|
||||
}
|
||||
err := l.SetConfigWithMap(m)
|
||||
t.Assert(err, nil)
|
||||
|
||||
l.SetWriter(buffer)
|
||||
|
||||
l.Debug("test")
|
||||
l.Warning("test")
|
||||
t.Assert(strings.Contains(buffer.String(), "DEBU"), true)
|
||||
t.Assert(strings.Contains(buffer.String(), "WARN"), true)
|
||||
})
|
||||
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
buffer := bytes.NewBuffer(nil)
|
||||
l := New()
|
||||
m := map[string]interface{}{
|
||||
"level": "warn",
|
||||
}
|
||||
err := l.SetConfigWithMap(m)
|
||||
t.Assert(err, nil)
|
||||
l.SetWriter(buffer)
|
||||
l.Debug("test")
|
||||
l.Warning("test")
|
||||
t.Assert(strings.Contains(buffer.String(), "DEBU"), false)
|
||||
t.Assert(strings.Contains(buffer.String(), "WARN"), true)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user