summaryrefslogtreecommitdiffhomepage
path: root/internal/logging
diff options
context:
space:
mode:
authoradamdottv <[email protected]>2025-05-06 14:22:37 -0500
committeradamdottv <[email protected]>2025-05-06 14:22:37 -0500
commitb638dafe5fb2b6fcdd6d9b64502a7808f3e81eb5 (patch)
tree6f6729fcc08a042812b642ef6acb8fc4d9db9b9b /internal/logging
parente387b1f16c2a7630c7f2ea29b39d4f50b1760ad7 (diff)
downloadopencode-b638dafe5fb2b6fcdd6d9b64502a7808f3e81eb5.tar.gz
opencode-b638dafe5fb2b6fcdd6d9b64502a7808f3e81eb5.zip
feat: better logs page
Diffstat (limited to 'internal/logging')
-rw-r--r--internal/logging/writer.go15
1 files changed, 14 insertions, 1 deletions
diff --git a/internal/logging/writer.go b/internal/logging/writer.go
index 50f3367db..4cb89f24f 100644
--- a/internal/logging/writer.go
+++ b/internal/logging/writer.go
@@ -17,6 +17,11 @@ const (
PersistTimeArg = "$_persist_time"
)
+const (
+ // Maximum number of log messages to keep in memory
+ maxLogMessages = 1000
+)
+
type LogData struct {
messages []LogMessage
*pubsub.Broker[LogMessage]
@@ -26,7 +31,15 @@ type LogData struct {
func (l *LogData) Add(msg LogMessage) {
l.lock.Lock()
defer l.lock.Unlock()
+
+ // Add new message
l.messages = append(l.messages, msg)
+
+ // Trim if exceeding max capacity
+ if len(l.messages) > maxLogMessages {
+ l.messages = l.messages[len(l.messages)-maxLogMessages:]
+ }
+
l.Publish(pubsub.CreatedEvent, msg)
}
@@ -37,7 +50,7 @@ func (l *LogData) List() []LogMessage {
}
var defaultLogData = &LogData{
- messages: make([]LogMessage, 0),
+ messages: make([]LogMessage, 0, maxLogMessages),
Broker: pubsub.NewBroker[LogMessage](),
}