增加日志文件用于分析

This commit is contained in:
suguo.yao 2023-02-28 11:30:23 +08:00
parent 97259319e1
commit 23d647dfa6
4 changed files with 74 additions and 5 deletions

17
go.mod
View File

@ -2,10 +2,19 @@ module myschools.me/suguo/mqtt-demo
go 1.20
require github.com/eclipse/paho.mqtt.golang v1.4.2
require (
github.com/eclipse/paho.mqtt.golang v1.4.2
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible
github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5
github.com/sirupsen/logrus v1.9.0
)
require (
github.com/gorilla/websocket v1.4.2 // indirect
golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0 // indirect
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
github.com/gorilla/websocket v1.5.0 // indirect
github.com/jonboulle/clockwork v0.3.0 // indirect
github.com/lestrrat-go/strftime v1.0.6 // indirect
github.com/pkg/errors v0.9.1 // indirect
golang.org/x/net v0.7.0 // indirect
golang.org/x/sync v0.1.0 // indirect
golang.org/x/sys v0.5.0 // indirect
)

View File

@ -6,6 +6,7 @@ import (
"time"
MQTT "github.com/eclipse/paho.mqtt.golang"
"github.com/sirupsen/logrus"
)
var MqttConnect MQTT.OnConnectHandler = func(client MQTT.Client) {
@ -37,6 +38,6 @@ var serviceHandler MQTT.MessageHandler = func(client MQTT.Client, msg MQTT.Messa
continue
}
payload := fmt.Sprintf("%s,%s,%s,%f", time.Unix(int64(body.Time), 0), body.Mac, o[1], o[2].(float64))
fmt.Println(payload)
logrus.Println(payload)
}
}

58
logger.go Normal file
View File

@ -0,0 +1,58 @@
package main
import (
"fmt"
"os"
"time"
rotatelogs "github.com/lestrrat-go/file-rotatelogs"
"github.com/rifflock/lfshook"
"github.com/sirupsen/logrus"
)
func init() {
//日志初始化
//logrus.SetOutput(os.Stdout)
logrus.SetLevel(logrus.DebugLevel)
logrus.AddHook(newLfsHook(72))
}
func newLfsHook(maxRemainCnt uint) logrus.Hook {
//检查与创建日志文件夹
_, err := os.Stat("logs")
if os.IsNotExist(err) {
os.Mkdir("logs", 0755)
}
logName := fmt.Sprintf(`logs/%s`, "MQTT")
writer, err := rotatelogs.New(
logName+"%Y%m%d.log",
// WithLinkName为最新的日志建立软连接以方便随着找到当前日志文件
rotatelogs.WithLinkName(logName),
// WithRotationTime设置日志分割的时间这里设置为一小时分割一次
rotatelogs.WithRotationTime(24*time.Hour),
// WithMaxAge和WithRotationCount二者只能设置一个
// WithMaxAge设置文件清理前的最长保存时间
// WithRotationCount设置文件清理前最多保存的个数。
//rotatelogs.WithMaxAge(time.Hour*24),
rotatelogs.WithRotationCount(maxRemainCnt),
)
if err != nil {
panic("config local file system for logger error: " + err.Error())
}
logrus.SetLevel(logrus.DebugLevel)
lfsHook := lfshook.NewHook(lfshook.WriterMap{
logrus.DebugLevel: writer,
logrus.InfoLevel: writer,
logrus.WarnLevel: writer,
logrus.ErrorLevel: writer,
logrus.FatalLevel: writer,
logrus.PanicLevel: writer,
}, &logrus.TextFormatter{DisableColors: true})
return lfsHook
}

View File

@ -12,6 +12,7 @@ import (
)
func main() {
mqtt.Init(&mqtt.Config{
Host: "47.99.211.113:1883",
Username: "dev",