package generic import ( "encoding/csv" "fmt" "log" "os" "path/filepath" "time" "github.com/xtaci/kcp-go" ) func SnmpLogger(path string, interval int) { if path == "" || interval == 0 { return } ticker := time.NewTicker(time.Duration(interval) * time.Second) defer ticker.Stop() for { select { case <-ticker.C: // split path into dirname and filename logdir, logfile := filepath.Split(path) // only format logfile f, err := os.OpenFile(logdir+time.Now().Format(logfile), os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { log.Println(err) return } w := csv.NewWriter(f) // write header in empty file if stat, err := f.Stat(); err == nil && stat.Size() == 0 { if err := w.Write(append([]string{"Unix"}, kcp.DefaultSnmp.Header()...)); err != nil { log.Println(err) } } if err := w.Write(append([]string{fmt.Sprint(time.Now().Unix())}, kcp.DefaultSnmp.ToSlice()...)); err != nil { log.Println(err) } // kcp.DefaultSnmp.Reset() w.Flush() f.Close() } } }