diff options
Diffstat (limited to 'service_report.go')
| -rw-r--r-- | service_report.go | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/service_report.go b/service_report.go index 7aee321..492e368 100644 --- a/service_report.go +++ b/service_report.go @@ -28,19 +28,19 @@ type ServiceReport struct { History []ScanReport } -func NewServiceReport(opts ServerOptions, name string) ( +func NewServiceReport(cfg ServerConfig, name string) ( svcReport *ServiceReport, err error, ) { var logp = `NewServiceReport` svcReport = &ServiceReport{ - logPath: filepath.Join(opts.logServiceDir, name+`.log`), + logPath: filepath.Join(cfg.logServiceDir, name+`.log`), Name: name, History: make([]ScanReport, 0, historyMax), } svcReport.logf, err = os.OpenFile(svcReport.logPath, - os.O_WRONLY|os.O_CREATE, 0600) + os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0600) if err != nil { return nil, fmt.Errorf(`%s: %w`, logp, err) } @@ -52,6 +52,7 @@ func NewServiceReport(opts ServerOptions, name string) ( // Close release any resources opened by report. func (svcReport *ServiceReport) Close() (err error) { + svcReport.writer.Flush() err = svcReport.logf.Close() if err != nil { return fmt.Errorf(`Close: %w`, err) @@ -60,16 +61,19 @@ func (svcReport *ServiceReport) Close() (err error) { } func (svcReport *ServiceReport) Store(scanReport ScanReport) { + var record = scanReport.toCSV() + log.Printf(`Store: %v`, record) + var err = svcReport.writer.Write(record) + if err != nil { + log.Printf(`Store: %s`, err) + } + svcReport.Last = scanReport svcReport.History = append(svcReport.History, scanReport) if len(svcReport.History) == historyMax { + svcReport.writer.Flush() var start = len(svcReport.History) - historyKeepSize copy(svcReport.History, svcReport.History[start:]) svcReport.History = svcReport.History[:historyKeepSize-1] } - var record = scanReport.toCSV() - var err = svcReport.writer.Write(record) - if err != nil { - log.Printf(`Store: %s`, err) - } } |
