| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- package elastic
- //import (
- // "context"
- // "fmt"
- // cherryLogger "github.com/cherry-game/cherry/logger"
- // "github.com/olivere/elastic"
- // "github.com/sirupsen/logrus"
- // "log"
- // "os"
- // "strings"
- // "time"
- //)
- //
- ////cfg 配置文件
- //type cfg struct {
- // LogLvl string // 日志级别
- // EsAddrs []string //ES addr
- // EsUser string //ES user
- // EsPassword string //ES password
- //}
- //
- ////setupLogrus 初始化logrus 同时把logrus的logger var 引用到这个common.Logger
- //func setupLogrus(cc cfg) error {
- // //logFileName := fmt.Sprintf("%s_%s.log", os.Args[1], time.Now().Format("06_01_02T15_04_05"))
- // //
- // //f, err := os.CreateGroup(logFileName)
- // //if err != nil {
- // // return err
- // //}
- //
- // logLvl, err := logrus.ParseLevel(cc.LogLvl)
- // if err != nil {
- // return err
- // }
- // logrus.SetLevel(logLvl)
- // //logrus.SetReportCaller(true)
- // //logrus.SetFormatter(&logrus.JSONFormatter{})
- // //使用console默认输出
- //
- // //logrus.SetOutput(f)
- //
- // logrus.SetReportCaller(true)
- // //开启 logrus ES hook
- // esh := newEsHook(cc)
- // logrus.AddHook(esh)
- // fmt.Printf(">= error 级别,查看日志 %#v 中的logrus* 索引\n", cc.EsAddrs)
- //
- // return nil
- //}
- //func main() {
- // cc := cfg{
- // LogLvl: "error",
- // EsAddrs: []string{"http://es.felix.mojotv.cn:9202/"},
- // EsUser: "",
- // EsPassword: "",
- // }
- // err := setupLogrus(cc)
- // if err != nil {
- // log.Fatal(err)
- // }
- // logrus.WithField("URI", "mojotv.cn").Error("I love my son Felix")
- // //等待日志发送到ES
- // time.Sleep(time.Second * 10)
- //}
- //
- ////esHook 自定义的ES hook
- //type esHook struct {
- // cmd string // 记录启动的命令
- // client *elastic.Client
- //}
- //
- ////newEsHook 初始化
- //func newEsHook(cc cfg) *esHook {
- // es, err := elastic.NewClient(
- // elastic.SetURL(cc.EsAddrs...),
- // elastic.SetBasicAuth(cc.EsUser, cc.EsPassword),
- // elastic.SetSniff(false),
- // elastic.SetHealthcheckInterval(15*time.Second),
- // elastic.SetErrorLog(log.New(os.Stderr, "ES:", log.LstdFlags)),
- // //elastic.SetInfoLog(log.New(os.Stdout, "ES:", log.LstdFlags)),
- // )
- //
- // if err != nil {
- // log.Fatal("failed to create Elastic V6 Client: ", err)
- // }
- // return &esHook{client: es, cmd: strings.EnterGroup(os.Args, " ")}
- //}
- //
- ////Fire logrus hook interface 方法
- //func (hook *esHook) Fire(entry *logrus.Entry) error {
- // doc := newEsLog(entry)
- // doc["cmd"] = hook.cmd
- // go hook.sendEs(doc)
- // return nil
- //}
- //
- ////Levels logrus hook interface 方法
- //func (hook *esHook) Levels() []logrus.Level {
- // return []logrus.Level{
- // logrus.PanicLevel,
- // logrus.FatalLevel,
- // logrus.ErrorLevel,
- // }
- //}
- //
- ////sendEs 异步发送日志到es
- //func (hook *esHook) sendEs(doc appLogDocModel) {
- // defer func() {
- // if r := recover(); r != nil {
- // fmt.Println("send entry to es failed: ", r)
- // }
- // }()
- // _, err := hook.client.Index().Index(doc.indexName()).MainType("_doc").BodyJson(doc).Do(context.Background())
- // if err != nil {
- // log.Println(err)
- // }
- //}
- //
- ////appLogDocModel es model
- //type appLogDocModel map[string]any
- //
- //func newEsLog(e *logrus.Entry) appLogDocModel {
- // ins := map[string]any{}
- // for kk, vv := range e.Data {
- // ins[kk] = vv
- // }
- // ins["time"] = time.Now().Local()
- // ins["lvl"] = e.Level
- // ins["message"] = e.Message
- // ins["caller"] = fmt.Sprintf("%s:%d %#v", e.Caller.File, e.Caller.Line, e.Caller.Func)
- // return ins
- //}
- //
- //// indexName es index name 时间分割
- //func (m *appLogDocModel) indexName() string {
- // return "mojocn-cn-" + time.Now().Local().Format("2006-01-02")
- //}
|