From a3418e0c95a5d6b244178b40a6552330d44a3d4b Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Tue, 7 Jan 2025 15:11:05 +0000 Subject: [PATCH] Added a logger to be easier to differentiate on the output --- irsdk.go | 21 ++++++++++++++------- logger/logger.go | 23 +++++++++++++++++++++++ variables.go | 1 - 3 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 logger/logger.go diff --git a/irsdk.go b/irsdk.go index e955535..b9729ce 100644 --- a/irsdk.go +++ b/irsdk.go @@ -2,8 +2,9 @@ package goirsdk import ( + "github.com/ESilva15/goirsdk/logger" + "fmt" - "log" "os" "io" @@ -53,10 +54,10 @@ func (i *IBT) IsConnected() bool { return false } -func (i *IBT) exportYAML(path string) { +func (i *IBT) exportYAML(path string) error { file, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) if err != nil { - log.Println("Failed to open output file for YAML: ", err) + return fmt.Errorf("failed to open output file for YAML: %v", err) } defer file.Close() @@ -64,12 +65,16 @@ func (i *IBT) exportYAML(path string) { err = enc.Encode(i.SessionInfo) if err != nil { - log.Println("Failed to print YAML to file: ", err) + return fmt.Errorf("failed to write YAML contents to file: %v", err) } + + return nil } // Init serves to initialize and get a hold of a IBT struct func Init(f Reader, exportTelem string, exportYAML string) (*IBT, error) { + log := logger.GetInstance() + // Read the header of the file var err error ibt := IBT{ @@ -84,9 +89,8 @@ func Init(f Reader, exportTelem string, exportYAML string) (*IBT, error) { if exportTelem != "" { ibt.FileToExport, err = os.OpenFile(exportTelem, os.O_CREATE|os.O_RDWR, 0644) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to open ibt export file: %v", err) } - ibt.FileToExport.Sync() } if ibt.File == nil { @@ -167,7 +171,10 @@ func Init(f Reader, exportTelem string, exportYAML string) (*IBT, error) { } // Write to YAML output file if exportYAML != "" { - ibt.exportYAML(exportYAML) + err := ibt.exportYAML(exportYAML) + if err != nil { + return nil, err + } } // Read the telemetry vars info diff --git a/logger/logger.go b/logger/logger.go new file mode 100644 index 0000000..6bf410d --- /dev/null +++ b/logger/logger.go @@ -0,0 +1,23 @@ +package logger + +import ( + "log" + "os" + "sync" +) + +var l *log.Logger +var once sync.Once + +func createLogger() { + l = log.New(os.Stdout, "[ibtReader] ", log.LstdFlags | log.Lshortfile) +} + +func GetInstance() *log.Logger { + once.Do(func() { + createLogger() + }) + + return l +} + diff --git a/variables.go b/variables.go index fac1586..f3bc9d6 100644 --- a/variables.go +++ b/variables.go @@ -112,7 +112,6 @@ func (i *IBT) readVariablerHeaders() error { if err != nil { log.Fatal(err) } - i.FileToExport.Sync() var dst IBTVar err = binary.Read(bytes.NewBuffer(rbuf[:]), binary.LittleEndian, &dst)