| // 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 |
| } |