Feature: Replace in-memory log buffer with database-backed logging

This commit is contained in:
2025-05-22 06:40:15 -07:00
parent e66361ea4e
commit 54593c31da
4 changed files with 156 additions and 76 deletions

23
main.go
View File

@@ -16,13 +16,12 @@ import (
)
var (
runStart = time.Now()
logPath = runStart.Format("2006-01-02.15:04:05") + ".gomeshalerter.json"
logFile *os.File
logData []LogEntry
logBuffer *LogRingBuffer
db *sql.DB
logMutex sync.Mutex // Mutex for thread-safe logging
runStart = time.Now()
logPath = runStart.Format("2006-01-02.15:04:05") + ".gomeshalerter.json"
logFile *os.File
logData []LogEntry
db *sql.DB
logMutex sync.Mutex // Mutex for thread-safe logging
)
func main() {
@@ -36,9 +35,6 @@ func main() {
log.Fatalf("Failed to open database: %v", err)
}
// Initialize log buffer
logBuffer = NewLogRingBuffer(MAX_LOG_ENTRIES)
// Define a cleanup function to properly close resources
cleanup := func() {
fmt.Fprintf(os.Stderr, "[shutdown] Closing database...\n")
@@ -113,6 +109,13 @@ func main() {
webServer(shutdown)
}()
// Start log cleanup worker goroutine
wg.Add(1)
go func() {
defer wg.Done()
logCleanupWorker(shutdown)
}()
// Wait for all goroutines to finish
wg.Wait()
fmt.Fprintf(os.Stderr, "[shutdown] All goroutines stopped, exiting...\n")