mirror of
https://github.com/geektutu/7days-golang.git
synced 2024-04-21 12:32:11 +00:00
48 lines
790 B
Go
48 lines
790 B
Go
package log
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"log"
|
|
"os"
|
|
"sync"
|
|
)
|
|
|
|
var (
|
|
errorLog = log.New(os.Stdout, "\033[31m[error]\033[0m ", log.LstdFlags|log.Lshortfile)
|
|
infoLog = log.New(os.Stdout, "\033[34m[info ]\033[0m ", log.LstdFlags|log.Lshortfile)
|
|
loggers = []*log.Logger{errorLog, infoLog}
|
|
mu sync.Mutex
|
|
)
|
|
|
|
// log methods
|
|
var (
|
|
Error = errorLog.Println
|
|
Errorf = errorLog.Printf
|
|
Info = infoLog.Println
|
|
Infof = infoLog.Printf
|
|
)
|
|
|
|
// log levels
|
|
const (
|
|
InfoLevel = iota
|
|
ErrorLevel
|
|
Disabled
|
|
)
|
|
|
|
// SetLevel controls log level
|
|
func SetLevel(level int) {
|
|
mu.Lock()
|
|
defer mu.Unlock()
|
|
|
|
for _, logger := range loggers {
|
|
logger.SetOutput(os.Stdout)
|
|
}
|
|
|
|
if ErrorLevel < level {
|
|
errorLog.SetOutput(ioutil.Discard)
|
|
}
|
|
if InfoLevel < level {
|
|
infoLog.SetOutput(ioutil.Discard)
|
|
}
|
|
}
|