Files
2026-05-16 00:18:06 -03:00

46 lines
869 B
Go

package engine
import (
"fmt"
"sync"
"time"
)
type LogEntry struct {
ID int64 `json:"id"`
Time string `json:"time"`
Level string `json:"level"`
Message string `json:"message"`
}
type Logger struct {
mu sync.Mutex
nextID int64
entries []LogEntry
}
func NewLogger() *Logger { return &Logger{} }
func (l *Logger) Add(level, format string, args ...any) {
l.mu.Lock()
defer l.mu.Unlock()
l.nextID++
entry := LogEntry{ID: l.nextID, Time: time.Now().Format("15:04:05"), Level: level, Message: fmt.Sprintf(format, args...)}
l.entries = append(l.entries, entry)
if len(l.entries) > 600 {
l.entries = l.entries[len(l.entries)-600:]
}
}
func (l *Logger) Since(id int64) []LogEntry {
l.mu.Lock()
defer l.mu.Unlock()
out := make([]LogEntry, 0)
for _, e := range l.entries {
if e.ID > id {
out = append(out, e)
}
}
return out
}