mirror of
https://git.sr.ht/~ashkeel/strimertul
synced 2024-09-20 02:00:49 +00:00
fix: wrap logs to prevent data races
This commit is contained in:
parent
3bc662796f
commit
398cf8da47
2 changed files with 8 additions and 6 deletions
2
app.go
2
app.go
|
@ -135,5 +135,5 @@ func (a *App) GetTwitchLoggedUser() (helix.User, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) GetLastLogs() []LogEntry {
|
func (a *App) GetLastLogs() []LogEntry {
|
||||||
return lastLogs
|
return lastLogs.Get()
|
||||||
}
|
}
|
||||||
|
|
12
logging.go
12
logging.go
|
@ -4,6 +4,8 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.sr.ht/~hamcha/containers/sync"
|
||||||
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"go.uber.org/zap/zapcore"
|
"go.uber.org/zap/zapcore"
|
||||||
"gopkg.in/natefinch/lumberjack.v2"
|
"gopkg.in/natefinch/lumberjack.v2"
|
||||||
|
@ -13,12 +15,12 @@ const LogHistory = 50
|
||||||
|
|
||||||
var (
|
var (
|
||||||
logger *zap.Logger
|
logger *zap.Logger
|
||||||
lastLogs []LogEntry
|
lastLogs *sync.Slice[LogEntry]
|
||||||
incomingLogs chan LogEntry
|
incomingLogs chan LogEntry
|
||||||
)
|
)
|
||||||
|
|
||||||
func initLogger(level zapcore.Level) {
|
func initLogger(level zapcore.Level) {
|
||||||
lastLogs = make([]LogEntry, 0)
|
lastLogs = sync.NewSlice[LogEntry]()
|
||||||
incomingLogs = make(chan LogEntry, 100)
|
incomingLogs = make(chan LogEntry, 100)
|
||||||
logStorage := NewLogStorage(level)
|
logStorage := NewLogStorage(level)
|
||||||
consoleLogger := zapcore.NewCore(
|
consoleLogger := zapcore.NewCore(
|
||||||
|
@ -90,9 +92,9 @@ func (core *LogStorage) Write(entry zapcore.Entry, fields []zapcore.Field) error
|
||||||
Message: entry.Message,
|
Message: entry.Message,
|
||||||
Data: buf.String(),
|
Data: buf.String(),
|
||||||
}
|
}
|
||||||
lastLogs = append(lastLogs, logEntry)
|
lastLogs.Push(logEntry)
|
||||||
if len(lastLogs) > LogHistory {
|
if lastLogs.Size() > LogHistory {
|
||||||
lastLogs = lastLogs[1:]
|
lastLogs.Splice(0, 1)
|
||||||
}
|
}
|
||||||
incomingLogs <- logEntry
|
incomingLogs <- logEntry
|
||||||
return nil
|
return nil
|
||||||
|
|
Loading…
Reference in a new issue