mirror of
https://github.com/Luzifer/cloudkeys-go.git
synced 2024-11-14 08:52:44 +00:00
40 lines
939 B
Go
40 lines
939 B
Go
// Copyright 2014 Canonical Ltd.
|
|
// Licensed under the LGPLv3, see LICENCE file for details.
|
|
|
|
package loggo
|
|
|
|
import (
|
|
"path"
|
|
"sync"
|
|
)
|
|
|
|
// TestWriter is a useful Writer for testing purposes. Each component of the
|
|
// logging message is stored in the Log array.
|
|
type TestWriter struct {
|
|
mu sync.Mutex
|
|
log []Entry
|
|
}
|
|
|
|
// Write saves the params as members in the TestLogValues struct appended to the Log array.
|
|
func (writer *TestWriter) Write(entry Entry) {
|
|
writer.mu.Lock()
|
|
defer writer.mu.Unlock()
|
|
entry.Filename = path.Base(entry.Filename)
|
|
writer.log = append(writer.log, entry)
|
|
}
|
|
|
|
// Clear removes any saved log messages.
|
|
func (writer *TestWriter) Clear() {
|
|
writer.mu.Lock()
|
|
defer writer.mu.Unlock()
|
|
writer.log = nil
|
|
}
|
|
|
|
// Log returns a copy of the current logged values.
|
|
func (writer *TestWriter) Log() []Entry {
|
|
writer.mu.Lock()
|
|
defer writer.mu.Unlock()
|
|
v := make([]Entry, len(writer.log))
|
|
copy(v, writer.log)
|
|
return v
|
|
}
|