2 Star 1 Fork 0

法马智慧/fmgo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
collector.go 1.27 KB
一键复制 编辑 原始数据 按行查看 历史
零海 提交于 2022-11-17 18:19 . 增加collector用于消费推送日志
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)
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/fmpt/fmgo.git
git@gitee.com:fmpt/fmgo.git
fmpt
fmgo
fmgo
v1.2.30

搜索帮助