Skip to content

Commit 0ebf09b

Browse files
committed
Record log files uncompressed and compress them additionally afterward
1 parent 197529f commit 0ebf09b

File tree

2 files changed

+39
-9
lines changed

2 files changed

+39
-9
lines changed

pkg/auto/auto-recorder.go

+10-9
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515

1616
type Recorder struct {
1717
Recorder *persistence.Recorder
18-
logFileName string
18+
logFilePath string
1919
logFileDir string
2020
}
2121

@@ -45,11 +45,11 @@ func (r *Recorder) StopRecording() {
4545
if err := r.Recorder.StopRecording(); err != nil {
4646
log.Println("Failed to stop recorder: ", err)
4747
}
48-
if err := index.WriteIndex(r.logFileName); err != nil {
49-
log.Println("Could not index log file:", r.logFileName, err)
48+
if err := index.WriteIndex(r.logFilePath); err != nil {
49+
log.Println("Could not index log file:", r.logFilePath, err)
5050
}
51-
if err := os.Rename(r.logFileName, filepath.Join(r.logFileDir, r.logFileName)); err != nil {
52-
log.Println("Could not move log file", err)
51+
if err := persistence.Compress(r.logFilePath, r.logFilePath+".gz"); err != nil {
52+
log.Println("Could not compress log file:", r.logFilePath, err)
5353
}
5454
}
5555

@@ -65,9 +65,10 @@ func (r *Recorder) consumeMessage(message *persistence.Message) {
6565
}
6666

6767
if !r.Recorder.IsRecording() && isTeamSet(&refMsg) && (isGameStage(&refMsg) || isPreGameStage(&refMsg)) {
68-
r.logFileName = logFileName(&refMsg)
69-
log.Println("Start recording ", r.logFileName)
70-
if err := r.Recorder.StartRecording(r.logFileName); err != nil {
68+
logFileName := logFileName(&refMsg)
69+
r.logFilePath = filepath.Join(r.logFileDir, logFileName)
70+
log.Println("Start recording ", r.logFilePath)
71+
if err := r.Recorder.StartRecording(r.logFilePath); err != nil {
7172
log.Println("Failed to start recorder: ", err)
7273
}
7374
} else if r.Recorder.IsRecording() {
@@ -87,7 +88,7 @@ func logFileName(refMsg *referee.Referee) string {
8788
teamNameYellow := strings.Replace(*refMsg.Yellow.Name, " ", "_", -1)
8889
teamNameBlue := strings.Replace(*refMsg.Blue.Name, " ", "_", -1)
8990
date := time.Unix(0, int64(*refMsg.PacketTimestamp*1000)).Format("2006-01-02_15-04")
90-
return fmt.Sprintf("%s_%s-vs-%s.log.gz", date, teamNameYellow, teamNameBlue)
91+
return fmt.Sprintf("%s_%s-vs-%s.log", date, teamNameYellow, teamNameBlue)
9192
}
9293

9394
func isGameStage(message *referee.Referee) bool {

pkg/persistence/compress.go

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package persistence
2+
3+
import (
4+
"compress/gzip"
5+
"io"
6+
"os"
7+
)
8+
9+
func Compress(inFile, outFile string) error {
10+
reader, err := os.OpenFile(inFile, os.O_RDONLY, 0660)
11+
writer, err := os.OpenFile(outFile, os.O_WRONLY|os.O_CREATE, 0660)
12+
if err != nil {
13+
return err
14+
}
15+
gzipWriter := gzip.NewWriter(writer)
16+
if _, err := io.Copy(gzipWriter, reader); err != nil {
17+
return err
18+
}
19+
if err := reader.Close(); err != nil {
20+
return err
21+
}
22+
if err := gzipWriter.Close(); err != nil {
23+
return err
24+
}
25+
if err := writer.Close(); err != nil {
26+
return err
27+
}
28+
return nil
29+
}

0 commit comments

Comments
 (0)