mirror of https://github.com/rjbasitali/go-log
69 lines
1.5 KiB
Go
69 lines
1.5 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, prefix: l.prefix, begin: l.begin}
|
|
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 1:
|
|
return "alert"
|
|
case 2:
|
|
return "error"
|
|
case 3:
|
|
return "warn"
|
|
case 4:
|
|
return "highlight"
|
|
case 5:
|
|
return "inform"
|
|
case 6:
|
|
return "log"
|
|
case 7:
|
|
return "trace"
|
|
default:
|
|
return ""
|
|
}
|
|
}
|
|
|
|
func hasLevel(b uint8, flag uint8) bool {
|
|
return b&flag != 0
|
|
}
|