diff --git a/go.mod b/go.mod index 68b400e..075a0a5 100644 --- a/go.mod +++ b/go.mod @@ -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 ) diff --git a/handler/mqtt-handler.go b/handler/mqtt-handler.go index ef9b56c..1d02929 100644 --- a/handler/mqtt-handler.go +++ b/handler/mqtt-handler.go @@ -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) } } diff --git a/logger.go b/logger.go new file mode 100644 index 0000000..efa06d9 --- /dev/null +++ b/logger.go @@ -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 +} diff --git a/main.go b/main.go index 14dc119..76cfefd 100644 --- a/main.go +++ b/main.go @@ -12,6 +12,7 @@ import ( ) func main() { + mqtt.Init(&mqtt.Config{ Host: "47.99.211.113:1883", Username: "dev",