代码拉取完成,页面将自动刷新
package logx
import (
"encoding/json"
"gitee.com/fmpt/fmgo/emqx"
)
// Push 推送日志
type Push func(message Message) error
// Collector 日志收集器
type Collector struct {
// 日志收集器名称
Name string
// 日志队列
LogChan chan string
// 例如:http、kafka、nacos 等
Push Push
}
type Message struct {
Server string `json:"server"`
Msg string `json:"msg"`
}
// NewCollector 创建并启动一个日志收集器
// name: 日志收集器名称
// push: 日志推送函数
func (l *Logger) NewCollector(server string, push Push) *Collector {
//func (l *Logger) NewCollector(name string, push Push) *Collector {
l.Collector = &Collector{
Name: server,
LogChan: make(chan string, 100),
Push: push,
}
go func() {
for msg := range l.Collector.LogChan {
message := Message{
Server: server,
Msg: msg,
}
if err := l.Collector.Push(message); err != nil {
l.Logger.Error(makeMessage("日志推送失败:", err.Error(), msg))
}
}
}()
return l.Collector
}
// PushToMqtt 推送至Mq
func PushToMqtt(mqtt *emqx.MQTT, topic string) func(Message) error {
return func(message Message) (err error) {
var msg []byte
if msg, err = json.Marshal(message); err != nil {
return err
}
return mqtt.Publish(topic, msg)
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。