Add MemLogger

This commit is contained in:
Christopher Goes 2018-04-23 13:22:07 +02:00
parent 62fc3e2c49
commit c7cd21955a
No known key found for this signature in database
GPG Key ID: E828D98232D328D3
2 changed files with 66 additions and 0 deletions

49
types/logger.go Normal file
View File

@ -0,0 +1,49 @@
package types
import (
"github.com/tendermint/tmlibs/log"
)
// MemLogger logs to memory
type MemLogger interface {
log.Logger
Logs() []LogEntry
}
// LogEntry is an entry in a log
type LogEntry struct {
Level string
Message string
Keyvals []interface{}
}
type memLogger struct {
entries *[]LogEntry
}
func (l memLogger) Debug(msg string, keyvals ...interface{}) {
*l.entries = append(*l.entries, LogEntry{"debug", msg, keyvals})
}
func (l memLogger) Info(msg string, keyvals ...interface{}) {
*l.entries = append(*l.entries, LogEntry{"info", msg, keyvals})
}
func (l memLogger) Error(msg string, keyvals ...interface{}) {
*l.entries = append(*l.entries, LogEntry{"error", msg, keyvals})
}
func (l memLogger) With(keyvals ...interface{}) log.Logger {
panic("not implemented")
}
func (l memLogger) Logs() []LogEntry {
return *l.entries
}
func NewMemLogger() MemLogger {
entries := make([]LogEntry, 0)
return &memLogger{
entries: &entries,
}
}

17
types/logger_test.go Normal file
View File

@ -0,0 +1,17 @@
package types
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestMemLogger(t *testing.T) {
logger := NewMemLogger()
logger.Info("msg")
require.Equal(t, logger.Logs(), []LogEntry{LogEntry{"info", "msg", nil}})
logger.Debug("msg2")
require.Equal(t, logger.Logs(), []LogEntry{LogEntry{"info", "msg", nil}, LogEntry{"debug", "msg2", nil}})
logger.Error("msg3", 2)
require.Equal(t, logger.Logs(), []LogEntry{LogEntry{"info", "msg", nil}, LogEntry{"debug", "msg2", nil}, LogEntry{"error", "msg3", []interface{}{2}}})
}