Add MemLogger
This commit is contained in:
parent
62fc3e2c49
commit
c7cd21955a
49
types/logger.go
Normal file
49
types/logger.go
Normal 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
17
types/logger_test.go
Normal 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}}})
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user