feat(pkg): add logger and round direct over sensor interface
This commit is contained in:
70
pkg/logger/default.go
Normal file
70
pkg/logger/default.go
Normal file
@ -0,0 +1,70 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
type defaultLogger struct {
|
||||
logLevel LogLevel
|
||||
mutex *sync.Mutex
|
||||
stdout io.Writer
|
||||
stderr io.Writer
|
||||
}
|
||||
|
||||
func (dl *defaultLogger) Debug(f string, v ...interface{}) {
|
||||
dl.log(LogLevelDebug, f, v...)
|
||||
}
|
||||
|
||||
func (dl *defaultLogger) Info(f string, v ...interface{}) {
|
||||
dl.log(LogLevelInfo, f, v...)
|
||||
}
|
||||
|
||||
func (dl *defaultLogger) Warn(f string, v ...interface{}) {
|
||||
dl.log(LogLevelWarn, f, v...)
|
||||
}
|
||||
|
||||
func (dl *defaultLogger) Error(f string, v ...interface{}) {
|
||||
dl.log(LogLevelError, f, v...)
|
||||
}
|
||||
|
||||
func (dl *defaultLogger) Fatal(f string, v ...interface{}) {
|
||||
dl.log(LogLevelFatal, f, v...)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
func (dl *defaultLogger) log(ll LogLevel, f string, v ...interface{}) {
|
||||
layout := "2006/01/02 15:04:05"
|
||||
dw := dl.stdout
|
||||
switch dl.logLevel {
|
||||
case LogLevelError:
|
||||
dw = dl.stderr
|
||||
case LogLevelFatal:
|
||||
dw = dl.stderr
|
||||
}
|
||||
dl.mutex.Lock()
|
||||
fmt.Fprintf(dw, "%v %v: %v \n", time.Now().Format(layout), ll, fmt.Sprintf(f, v...))
|
||||
dl.mutex.Unlock()
|
||||
}
|
||||
|
||||
func NewDefaultLogger(logLevel LogLevel, time bool) *defaultLogger {
|
||||
return &defaultLogger{
|
||||
logLevel: logLevel,
|
||||
mutex: new(sync.Mutex),
|
||||
stdout: os.Stdout,
|
||||
stderr: os.Stderr,
|
||||
}
|
||||
}
|
||||
|
||||
func NewSilentLogger() *defaultLogger {
|
||||
return &defaultLogger{
|
||||
logLevel: LogLevelDebug,
|
||||
mutex: new(sync.Mutex),
|
||||
stdout: ioutil.Discard,
|
||||
stderr: ioutil.Discard,
|
||||
}
|
||||
}
|
9
pkg/logger/interface.go
Normal file
9
pkg/logger/interface.go
Normal file
@ -0,0 +1,9 @@
|
||||
package logger
|
||||
|
||||
type Logger interface {
|
||||
Debug(string, ...interface{})
|
||||
Info(string, ...interface{})
|
||||
Warn(string, ...interface{})
|
||||
Error(string, ...interface{})
|
||||
Fatal(string, ...interface{})
|
||||
}
|
11
pkg/logger/loglevel.go
Normal file
11
pkg/logger/loglevel.go
Normal file
@ -0,0 +1,11 @@
|
||||
package logger
|
||||
|
||||
type LogLevel string
|
||||
|
||||
const (
|
||||
LogLevelDebug LogLevel = "DEBUG"
|
||||
LogLevelInfo LogLevel = "INFO"
|
||||
LogLevelWarn LogLevel = "WARN"
|
||||
LogLevelError LogLevel = "ERROR"
|
||||
LogLevelFatal LogLevel = "FATAL"
|
||||
)
|
Reference in New Issue
Block a user