test(pkg/logger): logger test
This commit is contained in:
		| @@ -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