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