go-log/logger_level.go

69 lines
1.6 KiB
Go

package log
const (
alertFlag = 0b00000001 // L1
errorFlag = 0b00000010 // L2
warnFlag = 0b00000100 // L3
highlightFlag = 0b00001000 // L4
informFlag = 0b00010000 // L5
logFlag = 0b00100000 // L6
traceFlag = 0b01000000 // L7
)
// Level returns a leveled logger, level can be from 1 to 6.
// Level 1 — Alert or Error
// Level 2 — Warn
// Level 3 — Highlight
// Level 4 — Inform
// Level 5 — Log
// Level 6 — Trace
// Anything above 6 as level will be considered Level 6.
// Pass 0 to output no logs.
func (l myLogger) Level(level uint8) Logger {
logger := myLogger{Writer: l.Writer, ErrWriter: l.ErrWriter, prefix: l.prefix, begin: l.begin, data: l.data}
switch level {
case 1:
logger.level = alertFlag
case 2:
logger.level = alertFlag | errorFlag
case 3:
logger.level = alertFlag | errorFlag | warnFlag
case 4:
logger.level = alertFlag | errorFlag | warnFlag | highlightFlag
case 5:
logger.level = alertFlag | errorFlag | warnFlag | highlightFlag | informFlag
case 6:
logger.level = alertFlag | errorFlag | warnFlag | highlightFlag | informFlag | logFlag
case 7:
logger.level = alertFlag | errorFlag | warnFlag | highlightFlag | informFlag | logFlag | traceFlag
default:
logger.level = 0
}
return logger
}
func unmarshalLevel(level uint8) string {
switch level {
case alertFlag:
return "alert"
case errorFlag:
return "error"
case warnFlag:
return "warn"
case highlightFlag:
return "highlight"
case informFlag:
return "inform"
case logFlag:
return "log"
case traceFlag:
return "trace"
default:
return ""
}
}
func hasLevel(b uint8, flag uint8) bool {
return b&flag != 0
}