Feat: add logger pkg

pull/1457/head
AH-dark 3 years ago
parent 846438e3af
commit 1601a88fe1

@ -116,7 +116,7 @@ require (
github.com/rivo/uniseg v0.2.0 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/satori/go.uuid v1.2.0 // indirect
github.com/sirupsen/logrus v1.8.1 // indirect
github.com/sirupsen/logrus v1.9.0 // indirect
github.com/soheilhy/cmux v0.1.5 // indirect
github.com/spf13/cobra v1.1.3 // indirect
github.com/spf13/pflag v1.0.5 // indirect
@ -146,7 +146,7 @@ require (
golang.org/x/net v0.0.0-20210510120150-4163338589ed // indirect
golang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c // indirect
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
golang.org/x/sys v0.0.0-20211020174200-9d6173849985 // indirect
golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64 // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/tools v0.1.0 // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect

@ -788,6 +788,8 @@ github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrf
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/assertions v1.0.0 h1:UVQPSSmc3qtTi+zPPkCXvZX9VvW/xT/NsRvKfwY81a8=
github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM=
@ -1159,6 +1161,9 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211020174200-9d6173849985 h1:LOlKVhfDyahgmqa97awczplwkjzNaELFg3zRIJ13RYo=
golang.org/x/sys v0.0.0-20211020174200-9d6173849985/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64 h1:UiNENfZ8gDvpiWw7IpOMQ27spWmThO1RwwdQVbJahJM=
golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=

@ -0,0 +1,65 @@
package logger
import (
"strings"
"time"
"github.com/fatih/color"
"github.com/sirupsen/logrus"
)
type formatter struct{}
// 日志颜色
var colors = map[logrus.Level]func(a ...interface{}) string{
logrus.WarnLevel: color.New(color.FgYellow).Add(color.Bold).SprintFunc(),
logrus.PanicLevel: color.New(color.BgHiRed).Add(color.Bold).SprintFunc(),
logrus.FatalLevel: color.New(color.BgRed).Add(color.Bold).SprintFunc(),
logrus.ErrorLevel: color.New(color.FgRed).Add(color.Bold).SprintFunc(),
logrus.InfoLevel: color.New(color.FgCyan).Add(color.Bold).SprintFunc(),
logrus.DebugLevel: color.New(color.FgWhite).Add(color.Bold).SprintFunc(),
}
// 不同级别前缀与时间的间隔,保持宽度一致
var spaces = map[logrus.Level]int{
logrus.WarnLevel: 1,
logrus.PanicLevel: 3,
logrus.ErrorLevel: 3,
logrus.FatalLevel: 3,
logrus.InfoLevel: 4,
logrus.DebugLevel: 3,
}
func GetLevelText(level logrus.Level) string {
switch level {
case logrus.PanicLevel:
return "Panic"
case logrus.FatalLevel:
return "Fatal"
case logrus.ErrorLevel:
return "Error"
case logrus.WarnLevel:
return "Warning"
case logrus.InfoLevel:
return "Info"
case logrus.DebugLevel:
return "Debug"
default:
return "Unknown"
}
}
func (f *formatter) Format(entry *logrus.Entry) ([]byte, error) {
c := color.New()
c.EnableColor()
s := c.Sprintf(
"%s%s %s %s\n",
colors[entry.Level]("["+GetLevelText(entry.Level)+"]"),
strings.Repeat(" ", spaces[entry.Level]),
time.Now().Format("2006-01-02 15:04:05"),
entry.Message,
)
return []byte(s), nil
}

@ -0,0 +1,20 @@
package logger
import (
"os"
"github.com/sirupsen/logrus"
)
func NewLogger() *logrus.Logger {
logger := logrus.New()
logger.SetFormatter(new(formatter))
logger.SetOutput(os.Stdout)
logger.SetLevel(logrus.DebugLevel)
return logger
}
func SetLevel(level logrus.Level) {
GlobalLogger.SetLevel(level)
}

@ -0,0 +1,14 @@
package logger
var GlobalLogger = NewLogger()
var (
Debug = GlobalLogger.Debugf
Info = GlobalLogger.Infof
Warn = GlobalLogger.Warnf
Warning = GlobalLogger.Warnf
Error = GlobalLogger.Errorf
Fatal = GlobalLogger.Fatalf
Panic = GlobalLogger.Panicf
Println = GlobalLogger.Println
)
Loading…
Cancel
Save