Skip to content

Commit 5e2d6ca

Browse files
committed
Copy finished logs to separate folder and serve only from there
1 parent 0d6784f commit 5e2d6ca

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

cmd/ssl-auto-recorder/ssl-auto-recorder.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ var refereeEnabled = flag.Bool("referee-enabled", true, "Record referee packages
2323
var httpServe = flag.Bool("http-serve", true, "Serve log files via HTTP")
2424
var httpPort = flag.String("http-port", "8084", "HTTP port for serving log files")
2525

26+
var outputFolder = flag.String("output-folder", "logs", "Output folder where completed logs are copied to")
27+
2628
var VisionLegacyType = persistence.MessageType{Id: persistence.MessageSslVision2010, Name: "vision-legacy"}
2729
var VisionType = persistence.MessageType{Id: persistence.MessageSslVision2014, Name: "vision"}
2830
var VisionTrackerType = persistence.MessageType{Id: persistence.MessageSslVisionTracker2020, Name: "vision-tracker"}
@@ -31,13 +33,13 @@ var RefereeType = persistence.MessageType{Id: persistence.MessageSslRefbox2013,
3133
func main() {
3234
flag.Parse()
3335

34-
autoRecorder := auto.NewRecorder()
36+
autoRecorder := auto.NewRecorder(*outputFolder)
3537

3638
addSlots(autoRecorder.Recorder)
3739
autoRecorder.Start()
3840

3941
if *httpServe {
40-
http.Handle("/", http.FileServer(http.Dir(".")))
42+
http.Handle("/", http.FileServer(http.Dir(*outputFolder)))
4143
log.Printf("Serving log files on HTTP port: %s\n", *httpPort)
4244
go log.Fatal(http.ListenAndServe(":"+*httpPort, nil))
4345
}

pkg/auto/auto-recorder.go

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,27 @@ import (
66
"github.com/RoboCup-SSL/ssl-go-tools/pkg/persistence"
77
"google.golang.org/protobuf/proto"
88
"log"
9+
"os"
10+
"path/filepath"
911
"strings"
1012
"time"
1113
)
1214

1315
type Recorder struct {
14-
Recorder *persistence.Recorder
16+
Recorder *persistence.Recorder
17+
logFileName string
18+
logFileDir string
1519
}
1620

17-
func NewRecorder() (r *Recorder) {
21+
func NewRecorder(logFileDir string) (r *Recorder) {
1822
r = new(Recorder)
1923
r.Recorder = new(persistence.Recorder)
2024
*r.Recorder = persistence.NewRecorder()
2125
r.Recorder.AddMessageConsumer(r.consumeMessage)
26+
r.logFileDir = logFileDir
27+
if err := os.MkdirAll(r.logFileDir, os.ModePerm); err != nil {
28+
log.Println("Could not create log file dir", err)
29+
}
2230
return
2331
}
2432

@@ -45,9 +53,9 @@ func (r *Recorder) consumeMessage(message *persistence.Message) {
4553
}
4654

4755
if !r.Recorder.IsRecording() && isTeamSet(&refMsg) && (isGameStage(&refMsg) || isPreGameStage(&refMsg)) {
48-
name := logFileName(&refMsg)
49-
log.Println("Start recording ", name)
50-
if err := r.Recorder.StartRecording(name); err != nil {
56+
r.logFileName = logFileName(&refMsg)
57+
log.Println("Start recording ", r.logFileName)
58+
if err := r.Recorder.StartRecording(r.logFileName); err != nil {
5159
log.Println("Failed to start recorder: ", err)
5260
}
5361
} else if r.Recorder.IsRecording() {
@@ -56,6 +64,9 @@ func (r *Recorder) consumeMessage(message *persistence.Message) {
5664
if err := r.Recorder.StopRecording(); err != nil {
5765
log.Println("Failed to stop recorder: ", err)
5866
}
67+
if err := os.Rename(r.logFileName, filepath.Join(r.logFileDir, r.logFileName)); err != nil {
68+
log.Println("Could not move log file", err)
69+
}
5970
} else if !r.Recorder.IsPaused() && isBreakStage(&refMsg) {
6071
log.Println("Pause recording")
6172
r.Recorder.SetPaused(true)

0 commit comments

Comments
 (0)