diff options
| author | adamdottv <[email protected]> | 2025-05-06 14:22:37 -0500 |
|---|---|---|
| committer | adamdottv <[email protected]> | 2025-05-06 14:22:37 -0500 |
| commit | b638dafe5fb2b6fcdd6d9b64502a7808f3e81eb5 (patch) | |
| tree | 6f6729fcc08a042812b642ef6acb8fc4d9db9b9b /internal/logging | |
| parent | e387b1f16c2a7630c7f2ea29b39d4f50b1760ad7 (diff) | |
| download | opencode-b638dafe5fb2b6fcdd6d9b64502a7808f3e81eb5.tar.gz opencode-b638dafe5fb2b6fcdd6d9b64502a7808f3e81eb5.zip | |
feat: better logs page
Diffstat (limited to 'internal/logging')
| -rw-r--r-- | internal/logging/writer.go | 15 |
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](), } |
