test(pkg/logger): logger test
This commit is contained in:
		@@ -32,7 +32,7 @@ var daemonCmd = &cobra.Command{
 | 
			
		||||
			log.Fatalf("Can not parse clean cache interval into duration time: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		logger := logger.NewDefaultLogger(logger.LogLevelDebug, false)
 | 
			
		||||
		logger := logger.NewDefaultLogger(logger.LogLevelDebug)
 | 
			
		||||
 | 
			
		||||
		measurementUnit, err := sensor.SelectTemperatureMeasurementUnit(temperatureUnit)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -38,20 +38,34 @@ func (dl *defaultLogger) Fatal(f string, v ...interface{}) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (dl *defaultLogger) log(ll LogLevel, f string, v ...interface{}) {
 | 
			
		||||
 | 
			
		||||
	if dl.logLevel > ll {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	layout := "2006/01/02 15:04:05"
 | 
			
		||||
	dw := dl.stdout
 | 
			
		||||
	switch dl.logLevel {
 | 
			
		||||
	prefix := ""
 | 
			
		||||
	switch ll {
 | 
			
		||||
	case LogLevelDebug:
 | 
			
		||||
		prefix = "DEBUG"
 | 
			
		||||
	case LogLevelInfo:
 | 
			
		||||
		prefix = "INFO"
 | 
			
		||||
	case LogLevelWarn:
 | 
			
		||||
		prefix = "WARN"
 | 
			
		||||
	case LogLevelError:
 | 
			
		||||
		prefix = "ERROR"
 | 
			
		||||
		dw = dl.stderr
 | 
			
		||||
	case LogLevelFatal:
 | 
			
		||||
		prefix = "FATAL"
 | 
			
		||||
		dw = dl.stderr
 | 
			
		||||
	}
 | 
			
		||||
	dl.mutex.Lock()
 | 
			
		||||
	fmt.Fprintf(dw, "%v %v: %v \n", time.Now().Format(layout), ll, fmt.Sprintf(f, v...))
 | 
			
		||||
	fmt.Fprintf(dw, "%v %v: %v\n", time.Now().Format(layout), prefix, fmt.Sprintf(f, v...))
 | 
			
		||||
	dl.mutex.Unlock()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewDefaultLogger(logLevel LogLevel, time bool) *defaultLogger {
 | 
			
		||||
func NewDefaultLogger(logLevel LogLevel) Logger {
 | 
			
		||||
	return &defaultLogger{
 | 
			
		||||
		logLevel: logLevel,
 | 
			
		||||
		mutex:    new(sync.Mutex),
 | 
			
		||||
@@ -60,7 +74,16 @@ func NewDefaultLogger(logLevel LogLevel, time bool) *defaultLogger {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewSilentLogger() *defaultLogger {
 | 
			
		||||
func NewCustomLogger(loglevel LogLevel, out io.Writer, err io.Writer) Logger {
 | 
			
		||||
	return &defaultLogger{
 | 
			
		||||
		logLevel: loglevel,
 | 
			
		||||
		mutex:    new(sync.Mutex),
 | 
			
		||||
		stdout:   out,
 | 
			
		||||
		stderr:   err,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewSilentLogger() Logger {
 | 
			
		||||
	return &defaultLogger{
 | 
			
		||||
		logLevel: LogLevelDebug,
 | 
			
		||||
		mutex:    new(sync.Mutex),
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										69
									
								
								pkg/logger/default_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								pkg/logger/default_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,69 @@
 | 
			
		||||
package logger_test
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"github.com/go-flucky/flucky/pkg/logger"
 | 
			
		||||
	"github.com/stretchr/testify/require"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestLogger(t *testing.T) {
 | 
			
		||||
	require := require.New(t)
 | 
			
		||||
	stdoutBuffer := new(bytes.Buffer)
 | 
			
		||||
	stderrBuffer := new(bytes.Buffer)
 | 
			
		||||
 | 
			
		||||
	// LogLevelDebug
 | 
			
		||||
	l := logger.NewCustomLogger(logger.LogLevelDebug, stdoutBuffer, stderrBuffer)
 | 
			
		||||
	l.Debug("DEBUG")
 | 
			
		||||
	require.NotEmpty(stdoutBuffer.Bytes())
 | 
			
		||||
	require.Empty(stderrBuffer.Bytes())
 | 
			
		||||
 | 
			
		||||
	stdoutBuffer.Reset()
 | 
			
		||||
	stderrBuffer.Reset()
 | 
			
		||||
 | 
			
		||||
	// LogLevelInfo
 | 
			
		||||
	l = logger.NewCustomLogger(logger.LogLevelInfo, stdoutBuffer, stderrBuffer)
 | 
			
		||||
 | 
			
		||||
	l.Debug("DEBUG")
 | 
			
		||||
	require.Empty(stdoutBuffer.Bytes())
 | 
			
		||||
	require.Empty(stderrBuffer.Bytes())
 | 
			
		||||
 | 
			
		||||
	stdoutBuffer.Reset()
 | 
			
		||||
	stderrBuffer.Reset()
 | 
			
		||||
 | 
			
		||||
	l.Info("INFO")
 | 
			
		||||
	require.NotEmpty(stdoutBuffer.Bytes())
 | 
			
		||||
	require.Empty(stderrBuffer.Bytes())
 | 
			
		||||
 | 
			
		||||
	stringArray := strings.Split(stdoutBuffer.String(), ": ")
 | 
			
		||||
	require.Equal(2, len(stringArray))
 | 
			
		||||
	require.Equal("INFO\n", stringArray[1])
 | 
			
		||||
 | 
			
		||||
	stdoutBuffer.Reset()
 | 
			
		||||
	stderrBuffer.Reset()
 | 
			
		||||
 | 
			
		||||
	// LogLevelWarn
 | 
			
		||||
	l = logger.NewCustomLogger(logger.LogLevelWarn, stdoutBuffer, stderrBuffer)
 | 
			
		||||
	l.Warn("WARN")
 | 
			
		||||
	require.NotEmpty(stdoutBuffer.Bytes())
 | 
			
		||||
	require.Empty(stderrBuffer.Bytes())
 | 
			
		||||
 | 
			
		||||
	stringArray = strings.Split(stdoutBuffer.String(), ": ")
 | 
			
		||||
	require.Equal(2, len(stringArray))
 | 
			
		||||
	require.Equal("WARN\n", stringArray[1])
 | 
			
		||||
 | 
			
		||||
	stdoutBuffer.Reset()
 | 
			
		||||
	stderrBuffer.Reset()
 | 
			
		||||
 | 
			
		||||
	// LogLevelError
 | 
			
		||||
	l = logger.NewCustomLogger(logger.LogLevelError, stdoutBuffer, stderrBuffer)
 | 
			
		||||
	l.Error("ERROR")
 | 
			
		||||
	require.Empty(stdoutBuffer.Bytes())
 | 
			
		||||
	require.NotEmpty(stderrBuffer.Bytes())
 | 
			
		||||
 | 
			
		||||
	stringArray = strings.Split(stderrBuffer.String(), ": ")
 | 
			
		||||
	require.Equal(2, len(stringArray))
 | 
			
		||||
	require.Equal("ERROR\n", stringArray[1])
 | 
			
		||||
}
 | 
			
		||||
@@ -1,11 +1,11 @@
 | 
			
		||||
package logger
 | 
			
		||||
 | 
			
		||||
type LogLevel string
 | 
			
		||||
type LogLevel int
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	LogLevelDebug LogLevel = "DEBUG"
 | 
			
		||||
	LogLevelInfo  LogLevel = "INFO"
 | 
			
		||||
	LogLevelWarn  LogLevel = "WARN"
 | 
			
		||||
	LogLevelError LogLevel = "ERROR"
 | 
			
		||||
	LogLevelFatal LogLevel = "FATAL"
 | 
			
		||||
	LogLevelDebug LogLevel = iota + 1
 | 
			
		||||
	LogLevelInfo
 | 
			
		||||
	LogLevelWarn
 | 
			
		||||
	LogLevelError
 | 
			
		||||
	LogLevelFatal
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user