m/p/logtree: implement WithAddedStackDepth
This is a prerequisite to easily pass over trace-based events into
logtree. It allows a testing/Test.Helper()-like mechanism to skip some
stackframes within a call tree to the logger in order to log pertinent
log origins instead of a wrapper.
Change-Id: Ida9732f8505ff4a400e689045bea318a185f7983
Reviewed-on: https://review.monogon.dev/c/monogon/+/538
Reviewed-by: Leopold Schabel <leo@nexantic.com>
diff --git a/metropolis/pkg/logtree/klog.go b/metropolis/pkg/logtree/klog.go
index 07185ed..1c866f4 100644
--- a/metropolis/pkg/logtree/klog.go
+++ b/metropolis/pkg/logtree/klog.go
@@ -48,14 +48,14 @@
// the code handles the edge case of parsing a line from the end of a previous
// year at the beginning of the next).
func KLogParser(logger LeveledLogger) io.WriteCloser {
- n, ok := logger.(*node)
+ p, ok := logger.(*leveledPublisher)
if !ok {
// Fail fast, as this is a programming error.
- panic("Expected *node in LeveledLogger from supervisor")
+ panic("Expected *leveledPublisher in LeveledLogger from supervisor")
}
k := &klogParser{
- n: n,
+ publisher: p,
}
// klog seems to have no line length limit. Let's assume some sane sort of default.
k.buffer = logbuffer.NewLineBuffer(1024, k.consumeLine)
@@ -63,8 +63,8 @@
}
type klogParser struct {
- n *node
- buffer *logbuffer.LineBuffer
+ publisher *leveledPublisher
+ buffer *logbuffer.LineBuffer
}
func (k *klogParser) Write(p []byte) (n int, err error) {
@@ -84,17 +84,17 @@
if p == nil {
// We could instead emit that line as a raw log - however, this would lead to
// interleaving raw logging and leveled logging.
- k.n.Errorf("Invalid klog line: %s", l.Data)
+ k.publisher.Errorf("Invalid klog line: %s", l.Data)
}
// TODO(q3k): should this be exposed as an API on LeveledLogger? How much should
// we permit library users to 'fake' logs? This would also permit us to get rid
// of the type assertion in KLogParser().
e := &entry{
- origin: k.n.dn,
+ origin: k.publisher.node.dn,
leveled: p,
}
- k.n.tree.journal.append(e)
- k.n.tree.journal.notify(e)
+ k.publisher.node.tree.journal.append(e)
+ k.publisher.node.tree.journal.notify(e)
}
var (