Merge pull request 'add color support: levels are now printed with a corresponding color' (#1) from color into master
This commit is contained in:
commit
bd1a3395fe
|
@ -0,0 +1 @@
|
|||
.idea
|
50
log.go
50
log.go
|
@ -19,7 +19,38 @@ const (
|
|||
LevelError
|
||||
)
|
||||
|
||||
/**** Color code from https://gist.github.com/ik5/d8ecde700972d4378d87 ****/
|
||||
var (
|
||||
Debug = Teal
|
||||
Info = Green
|
||||
Warn = Yellow
|
||||
Error = Red
|
||||
)
|
||||
|
||||
var (
|
||||
Black = Color("\033[1;30m%s\033[0m")
|
||||
Red = Color("\033[1;31m%s\033[0m")
|
||||
Green = Color("\033[1;32m%s\033[0m")
|
||||
Yellow = Color("\033[1;33m%s\033[0m")
|
||||
Purple = Color("\033[1;34m%s\033[0m")
|
||||
Magenta = Color("\033[1;35m%s\033[0m")
|
||||
Teal = Color("\033[1;36m%s\033[0m")
|
||||
White = Color("\033[1;37m%s\033[0m")
|
||||
)
|
||||
|
||||
func Color(colorString string) func(...interface{}) string {
|
||||
sprint := func(args ...interface{}) string {
|
||||
return fmt.Sprintf(colorString,
|
||||
fmt.Sprint(args...))
|
||||
}
|
||||
return sprint
|
||||
}
|
||||
|
||||
/**** End color gist ****/
|
||||
|
||||
var levelString = map[Level]string{LevelDebug: "[DBUG]", LevelInfo: "[INFO]", LevelWarn: "[WARN]", LevelError: "[ERR ]"}
|
||||
var levelColor = map[Level]func(...interface{})string {LevelDebug: Debug, LevelInfo: Info, LevelWarn: Warn, LevelError: Error}
|
||||
|
||||
|
||||
// Logger is a go Logger wrapper that adds log levels and pattern filtering
|
||||
// It allows high level 'log level' filtering broadly
|
||||
|
@ -29,6 +60,7 @@ var levelString = map[Level]string{LevelDebug: "[DBUG]", LevelInfo: "[INFO]", Le
|
|||
type Logger struct {
|
||||
logger *golog.Logger
|
||||
level Level
|
||||
useColor bool
|
||||
nothingExceptPatterns []string
|
||||
everythingFromPatterns []string
|
||||
excludeFromPatterns []string
|
||||
|
@ -36,7 +68,7 @@ type Logger struct {
|
|||
|
||||
// New returns a new Logger with a filter set to the supplied level
|
||||
func New(level Level) *Logger {
|
||||
return &Logger{logger: golog.New(os.Stderr, "", golog.Ldate|golog.Ltime), level: level, everythingFromPatterns: make([]string, 0), nothingExceptPatterns: make([]string, 0)}
|
||||
return &Logger{logger: golog.New(os.Stderr, "", golog.Ldate|golog.Ltime), level: level, useColor: true, everythingFromPatterns: make([]string, 0), nothingExceptPatterns: make([]string, 0)}
|
||||
}
|
||||
|
||||
// NewFile returns a new Logger that logs to the supplied file with a filter set to the supplied level
|
||||
|
@ -46,7 +78,7 @@ func NewFile(level Level, filename string) (*Logger, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
return &Logger{logger: golog.New(logfile, "", golog.Ldate|golog.Ltime), level: level, everythingFromPatterns: make([]string, 0), nothingExceptPatterns: make([]string, 0)}, nil
|
||||
return &Logger{logger: golog.New(logfile, "", golog.Ldate|golog.Ltime), level: level, useColor: false, everythingFromPatterns: make([]string, 0), nothingExceptPatterns: make([]string, 0)}, nil
|
||||
}
|
||||
|
||||
var std = New(LevelWarn)
|
||||
|
@ -98,6 +130,11 @@ func (l *Logger) SetLevel(level Level) {
|
|||
l.level = level
|
||||
}
|
||||
|
||||
// SetUseColor toggles weather color output is used
|
||||
func (l *Logger) SetUseColor(useColor bool) {
|
||||
l.useColor = useColor
|
||||
}
|
||||
|
||||
// AddNothingExceptFilter enables strong filtering showing logs only for things on the approved list, adding this pattern to the list
|
||||
func (l *Logger) AddNothingExceptFilter(pattern string) {
|
||||
l.nothingExceptPatterns = append(l.nothingExceptPatterns, pattern)
|
||||
|
@ -131,7 +168,11 @@ func (l *Logger) header(level Level) string {
|
|||
}
|
||||
file = short
|
||||
}
|
||||
if l.useColor {
|
||||
return file + " " + levelColor[level](levelString[level]) + " "
|
||||
} else {
|
||||
return file + " " + levelString[level] + " "
|
||||
}
|
||||
}
|
||||
|
||||
// Printf outputs the format and variables, assuming it passes the filter levels
|
||||
|
@ -153,6 +194,11 @@ func SetLevel(level Level) {
|
|||
std.SetLevel(level)
|
||||
}
|
||||
|
||||
// SetUseColor toggles weather color output is used
|
||||
func SetUseColor(useColor bool) {
|
||||
std.useColor = useColor
|
||||
}
|
||||
|
||||
// AddNothingExceptFilter enables strong filtering showing logs only for things on the approved list, adding this pattern to the list
|
||||
func AddNothingExceptFilter(pattern string) {
|
||||
std.AddNothingExceptFilter(pattern)
|
||||
|
|
Loading…
Reference in New Issue