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
|
52
log.go
52
log.go
|
@ -19,7 +19,38 @@ const (
|
||||||
LevelError
|
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 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
|
// Logger is a go Logger wrapper that adds log levels and pattern filtering
|
||||||
// It allows high level 'log level' filtering broadly
|
// 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 {
|
type Logger struct {
|
||||||
logger *golog.Logger
|
logger *golog.Logger
|
||||||
level Level
|
level Level
|
||||||
|
useColor bool
|
||||||
nothingExceptPatterns []string
|
nothingExceptPatterns []string
|
||||||
everythingFromPatterns []string
|
everythingFromPatterns []string
|
||||||
excludeFromPatterns []string
|
excludeFromPatterns []string
|
||||||
|
@ -36,7 +68,7 @@ type Logger struct {
|
||||||
|
|
||||||
// New returns a new Logger with a filter set to the supplied level
|
// New returns a new Logger with a filter set to the supplied level
|
||||||
func New(level Level) *Logger {
|
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
|
// 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 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)
|
var std = New(LevelWarn)
|
||||||
|
@ -98,6 +130,11 @@ func (l *Logger) SetLevel(level Level) {
|
||||||
l.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
|
// 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) {
|
func (l *Logger) AddNothingExceptFilter(pattern string) {
|
||||||
l.nothingExceptPatterns = append(l.nothingExceptPatterns, pattern)
|
l.nothingExceptPatterns = append(l.nothingExceptPatterns, pattern)
|
||||||
|
@ -131,7 +168,11 @@ func (l *Logger) header(level Level) string {
|
||||||
}
|
}
|
||||||
file = short
|
file = short
|
||||||
}
|
}
|
||||||
return file + " " + levelString[level] + " "
|
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
|
// Printf outputs the format and variables, assuming it passes the filter levels
|
||||||
|
@ -153,6 +194,11 @@ func SetLevel(level Level) {
|
||||||
std.SetLevel(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
|
// AddNothingExceptFilter enables strong filtering showing logs only for things on the approved list, adding this pattern to the list
|
||||||
func AddNothingExceptFilter(pattern string) {
|
func AddNothingExceptFilter(pattern string) {
|
||||||
std.AddNothingExceptFilter(pattern)
|
std.AddNothingExceptFilter(pattern)
|
||||||
|
|
Loading…
Reference in New Issue