123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package generic
- import (
- "encoding/csv"
- "fmt"
- "log"
- "os"
- "path/filepath"
- "time"
- kcp "github.com/johnsonjh/gfcp"
- )
- // SnsiLogger ...
- func SnsiLogger(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, 0o666)
- 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.DefaultSnsi.Header()...)); err != nil {
- log.Println(err)
- }
- }
- if err := w.Write(append([]string{fmt.Sprint(time.Now().Unix())}, kcp.DefaultSnsi.ToSlice()...)); err != nil {
- log.Println(err)
- }
- // kcp.DefaultSnsi.Reset()
- w.Flush()
- f.Close()
- }
- }
- }
|