diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index 66d3f5a2..1b2c3766 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -599,6 +599,7 @@ func (ad *GameLogic) CreateDailyLogFile() { } ad.Mlogger, ad.MloggerErr = log.NewDailyLog(now, "Debug", "log", l.LstdFlags) if ad.MloggerErr != nil { + log.Debug(ad.MloggerErr.Error()) return } log.Export(ad.Mlogger) @@ -607,6 +608,38 @@ func (ad *GameLogic) CreateDailyLogFile() { log.Export(ad.Mlogger) } ad.Mlogger.Debug("CreateDailyLogFile") + + // Remove logs older than 15 days + ad.RemoveOldLogs(15) +} + +func (ad *GameLogic) RemoveOldLogs(days int) { + dir := conf.Server.LogPath + files, err := os.ReadDir(dir) + if err != nil { + log.Debug("Failed to read log directory: %v", err) + return + } + + cutoff := time.Now().AddDate(0, 0, -days) + for _, file := range files { + if file.IsDir() { + continue + } + fileInfo, err := file.Info() + if err != nil { + log.Debug("Failed to get file info: %v", err) + continue + } + if fileInfo.ModTime().Before(cutoff) { + err := os.Remove(dir + "/" + file.Name()) + if err != nil { + log.Debug("Failed to remove old log file: %v", err) + } else { + log.Debug("Removed old log file: %s", file.Name()) + } + } + } } func (ad *GameLogic) RegisterNetWorkFunc() {