diff options
author | Vincent Ambo <mail@tazj.in> | 2021-12-09T13·11+0300 |
---|---|---|
committer | Vincent Ambo <mail@tazj.in> | 2021-12-09T13·13+0300 |
commit | 59f97332b3076afe80ed3fe92eb0e1da676e3a99 (patch) | |
tree | 07e3cb9b1cf29693e3de3f6a2dfcf22bd58ebf92 /third_party/gerrit-queue/misc/rotatingloghandler.go | |
parent | ff10b7ab8303d050a8d7d751611da88bc13a75b4 (diff) | |
parent | 24f5a642af3aa1627bbff977f0a101907a02c69f (diff) |
subtree(3p/gerrit-queue): Vendor at commit '24f5a642' r/3170
Imported from github/tvlfyi/gerrit-queue, originally from github/tweag/gerrit-queue but that upstream is unmaintained. git-subtree-dir: third_party/gerrit-queue git-subtree-mainline: ff10b7ab8303d050a8d7d751611da88bc13a75b4 git-subtree-split: 24f5a642af3aa1627bbff977f0a101907a02c69f Change-Id: I307cc38185ab9e25eb102c95096298a150ae13a2
Diffstat (limited to 'third_party/gerrit-queue/misc/rotatingloghandler.go')
-rw-r--r-- | third_party/gerrit-queue/misc/rotatingloghandler.go | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/third_party/gerrit-queue/misc/rotatingloghandler.go b/third_party/gerrit-queue/misc/rotatingloghandler.go new file mode 100644 index 000000000000..3d4c5f3a837a --- /dev/null +++ b/third_party/gerrit-queue/misc/rotatingloghandler.go @@ -0,0 +1,34 @@ +package misc + +import ( + "sync" + + "github.com/apex/log" +) + +// RotatingLogHandler implementation. +type RotatingLogHandler struct { + mu sync.Mutex + Entries []*log.Entry + maxEntries int +} + +// NewRotatingLogHandler creates a new rotating log handler +func NewRotatingLogHandler(maxEntries int) *RotatingLogHandler { + return &RotatingLogHandler{ + maxEntries: maxEntries, + } +} + +// HandleLog implements log.Handler. +func (h *RotatingLogHandler) HandleLog(e *log.Entry) error { + h.mu.Lock() + defer h.mu.Unlock() + // drop tail if we have more entries than maxEntries + if len(h.Entries) > h.maxEntries { + h.Entries = append([]*log.Entry{e}, h.Entries[:(h.maxEntries-2)]...) + } else { + h.Entries = append([]*log.Entry{e}, h.Entries...) + } + return nil +} |