| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package iotLog
- import (
- "IotAdmin/core/sdk/config"
- "IotAdmin/core/tools/writer"
- iotStruct "IotAdmin/iot/struct"
- "encoding/json"
- "log"
- "strings"
- "time"
- )
- func init() {
- mp = make(map[string]*writer.FileWriter)
- }
- // LogData 记录数据日志
- func LogData(data *iotStruct.CollectData, cfg *iotStruct.ReportConfig, dataStr *string) {
- output := getWrite(data)
- logData := &iotStruct.LogData{
- Time: time.Now().Format("20060102150400"),
- No: data.SlaveConfig.No,
- Data: *data,
- ReportHost: cfg.Host,
- ReportProtocol: cfg.Protocol,
- ReportMn: cfg.MN,
- ReportUser: cfg.User,
- ReportPwd: cfg.Pwd,
- ReportStr: *dataStr,
- }
- str, err := json.Marshal(logData)
- if err != nil {
- log.Printf("Report Log Marshal error: %s \r\n", err.Error())
- return
- }
- _, err = output.Write(str)
- if err != nil {
- log.Printf("Report Log Write error: %s \r\n", err.Error())
- return
- }
- _, err = output.Write([]byte("\r\n"))
- }
- var mp map[string]*writer.FileWriter
- func getWrite(data *iotStruct.CollectData) *writer.FileWriter {
- path := getDataLogPath()
- path += strings.ReplaceAll(data.SlaveConfig.No, "_", "/")
- var output *writer.FileWriter
- var ok bool
- if output, ok = mp[path]; !ok {
- var err error
- output, err = writer.NewFileWriter(
- writer.WithPath(path),
- // 不切割文件
- writer.WithCap(0),
- writer.WithSuffix(".data"),
- )
- if err != nil {
- log.Printf("Report Log setup error: %s \r\n", err.Error())
- }
- mp[path] = output
- }
- return output
- }
- func getDataLogPath() string {
- path := config.ApplicationConfig.DataLogFile
- if path == "" {
- path = "./_data/iot/"
- } else if path[len(path)-1] != '/' {
- path += "/"
- }
- return path
- }
|