about summary refs log tree commit diff
path: root/third_party/gerrit-queue/misc/rotatingloghandler.go
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-12-09T13·11+0300
committerVincent Ambo <mail@tazj.in>2021-12-09T13·13+0300
commit59f97332b3076afe80ed3fe92eb0e1da676e3a99 (patch)
tree07e3cb9b1cf29693e3de3f6a2dfcf22bd58ebf92 /third_party/gerrit-queue/misc/rotatingloghandler.go
parentff10b7ab8303d050a8d7d751611da88bc13a75b4 (diff)
parent24f5a642af3aa1627bbff977f0a101907a02c69f (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.go34
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 0000000000..3d4c5f3a83
--- /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
+}