mirror of
https://github.com/xtaci/kcptun.git
synced 2024-04-21 12:32:32 +00:00
47 lines
1.0 KiB
Go
47 lines
1.0 KiB
Go
package generic
|
|
|
|
import (
|
|
"encoding/csv"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"path/filepath"
|
|
"time"
|
|
|
|
kcp "github.com/xtaci/kcp-go/v5"
|
|
)
|
|
|
|
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()
|
|
}
|
|
}
|
|
}
|