mirror of
https://github.com/MirageNetwork/MirageServer.git
synced 2025-09-26 20:41:34 +08:00
76 lines
1.6 KiB
Go
76 lines
1.6 KiB
Go
package controller
|
|
|
|
import (
|
|
"context"
|
|
"crypto/tls"
|
|
"net/http"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/elastic/go-elasticsearch/v8"
|
|
"github.com/elastic/go-elasticsearch/v8/esapi"
|
|
"github.com/rs/zerolog"
|
|
"github.com/rs/zerolog/log"
|
|
)
|
|
|
|
var esClient *elasticsearch.Client
|
|
|
|
func InitESLogger(cfg *Config) error {
|
|
// 初始化 Elasticsearch 客户端
|
|
escfg := elasticsearch.Config{
|
|
Transport: &http.Transport{
|
|
TLSClientConfig: &tls.Config{
|
|
InsecureSkipVerify: true,
|
|
},
|
|
},
|
|
Addresses: []string{cfg.ESURL},
|
|
APIKey: cfg.ESKey,
|
|
}
|
|
var err error
|
|
esClient, err = elasticsearch.NewClient(escfg)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
zerolog.TimeFieldFormat = "2006-01-02 15:04:05"
|
|
logger := zerolog.New(zerolog.MultiLevelWriter(os.Stdout, esClientWriter{})).With().Timestamp().Logger()
|
|
|
|
// 将自定义的 io.Writer 注册到 Logger 中
|
|
logger = logger.Level(zerolog.DebugLevel)
|
|
log.Logger = logger
|
|
return nil
|
|
}
|
|
|
|
type esClientWriter struct{}
|
|
|
|
func (w esClientWriter) Write(p []byte) (n int, err error) {
|
|
req := esapi.IndexRequest{
|
|
Index: "mirage-server",
|
|
Body: strings.NewReader(string(p)),
|
|
}
|
|
res, err := req.Do(context.Background(), esClient)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer res.Body.Close()
|
|
return len(p), nil
|
|
}
|
|
|
|
func (w esClientWriter) WriteLevel(l zerolog.Level, p []byte) (n int, err error) {
|
|
switch l {
|
|
case zerolog.InfoLevel:
|
|
req := esapi.IndexRequest{
|
|
Index: "mirage-server",
|
|
Body: strings.NewReader(string(p)),
|
|
}
|
|
res, err := req.Do(context.Background(), esClient)
|
|
if err != nil {
|
|
log.Warn().Msgf("ESLog write not complete")
|
|
return len(p), nil
|
|
}
|
|
defer res.Body.Close()
|
|
|
|
}
|
|
return len(p), nil
|
|
}
|