mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-06 04:15:46 +08:00
remove logrus
This commit is contained in:
parent
62d4a4dd9c
commit
568f6abe80
@ -52,7 +52,6 @@ func run(port int) error {
|
|||||||
if err := client.RegisterConf2Registry(constant.OpenIMCommonConfigKey, buf.Bytes()); err != nil {
|
if err := client.RegisterConf2Registry(constant.OpenIMCommonConfigKey, buf.Bytes()); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
log.NewPrivateLog(constant.LogFileName)
|
|
||||||
router := api.NewGinRouter(client, rdb)
|
router := api.NewGinRouter(client, rdb)
|
||||||
var address string
|
var address string
|
||||||
if config.Config.Api.ListenIP != "" {
|
if config.Config.Api.ListenIP != "" {
|
||||||
|
@ -164,10 +164,6 @@ log:
|
|||||||
isStdout: false
|
isStdout: false
|
||||||
isJson: false
|
isJson: false
|
||||||
withStack: false
|
withStack: false
|
||||||
elasticSearchSwitch: false
|
|
||||||
elasticSearchAddr: [ 127.0.0.1:9201 ]
|
|
||||||
elasticSearchUser: ""
|
|
||||||
elasticSearchPassword: ""
|
|
||||||
|
|
||||||
modulename: #日志文件按模块命名,默认即可
|
modulename: #日志文件按模块命名,默认即可
|
||||||
longConnSvrName: msg_gateway
|
longConnSvrName: msg_gateway
|
||||||
|
3
go.mod
3
go.mod
@ -22,7 +22,6 @@ require (
|
|||||||
github.com/minio/minio-go/v7 v7.0.22
|
github.com/minio/minio-go/v7 v7.0.22
|
||||||
github.com/mitchellh/mapstructure v1.4.2
|
github.com/mitchellh/mapstructure v1.4.2
|
||||||
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646
|
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646
|
||||||
github.com/olivere/elastic/v7 v7.0.23
|
|
||||||
github.com/pkg/errors v0.9.1
|
github.com/pkg/errors v0.9.1
|
||||||
github.com/prometheus/client_golang v1.13.0
|
github.com/prometheus/client_golang v1.13.0
|
||||||
github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5
|
github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5
|
||||||
@ -82,13 +81,11 @@ require (
|
|||||||
github.com/jcmturner/rpc/v2 v2.0.3 // indirect
|
github.com/jcmturner/rpc/v2 v2.0.3 // indirect
|
||||||
github.com/jinzhu/inflection v1.0.0 // indirect
|
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||||
github.com/jinzhu/now v1.1.5 // indirect
|
github.com/jinzhu/now v1.1.5 // indirect
|
||||||
github.com/josharian/intern v1.0.0 // indirect
|
|
||||||
github.com/json-iterator/go v1.1.12 // indirect
|
github.com/json-iterator/go v1.1.12 // indirect
|
||||||
github.com/klauspost/compress v1.13.6 // indirect
|
github.com/klauspost/compress v1.13.6 // indirect
|
||||||
github.com/klauspost/cpuid v1.3.1 // indirect
|
github.com/klauspost/cpuid v1.3.1 // indirect
|
||||||
github.com/leodido/go-urn v1.2.1 // indirect
|
github.com/leodido/go-urn v1.2.1 // indirect
|
||||||
github.com/lithammer/shortuuid v3.0.0+incompatible // indirect
|
github.com/lithammer/shortuuid v3.0.0+incompatible // indirect
|
||||||
github.com/mailru/easyjson v0.7.7 // indirect
|
|
||||||
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
|
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
|
||||||
github.com/minio/md5-simd v1.1.0 // indirect
|
github.com/minio/md5-simd v1.1.0 // indirect
|
||||||
github.com/minio/sha256-simd v0.1.1 // indirect
|
github.com/minio/sha256-simd v0.1.1 // indirect
|
||||||
|
@ -9,7 +9,6 @@ import (
|
|||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/config"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/config"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/constant"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/constant"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/log"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/log"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/mcontext"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/discoveryregistry"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/discoveryregistry"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/errs"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/errs"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/msg"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/proto/msg"
|
||||||
@ -98,7 +97,7 @@ func (m Message) newUserSendMsgReq(c *gin.Context, params *apistruct.ManagementS
|
|||||||
tips.JsonDetail = utils.StructToJsonString(params.Content)
|
tips.JsonDetail = utils.StructToJsonString(params.Content)
|
||||||
pbData.MsgData.Content, err = proto.Marshal(&tips)
|
pbData.MsgData.Content, err = proto.Marshal(&tips)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(mcontext.GetOperationID(c), "Marshal failed ", err.Error(), tips.String())
|
log.ZError(c, "Marshal failed ", err, "tips", tips.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return &pbData
|
return &pbData
|
||||||
|
@ -2,14 +2,12 @@ package msggateway
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/config"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/constant"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/log"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
func RunWsAndServer(rpcPort, wsPort, prometheusPort int) error {
|
func RunWsAndServer(rpcPort, wsPort, prometheusPort int) error {
|
||||||
log.NewPrivateLog(constant.LogFileName)
|
|
||||||
fmt.Println("start rpc/msg_gateway server, port: ", rpcPort, wsPort, prometheusPort, ", OpenIM version: ", config.Version)
|
fmt.Println("start rpc/msg_gateway server, port: ", rpcPort, wsPort, prometheusPort, ", OpenIM version: ", config.Version)
|
||||||
longServer, err := NewWsServer(
|
longServer, err := NewWsServer(
|
||||||
WithPort(wsPort),
|
WithPort(wsPort),
|
||||||
|
@ -30,12 +30,12 @@ func NewOnlineHistoryMongoConsumerHandler(database controller.CommonMsgDatabase)
|
|||||||
return mc
|
return mc
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mc *OnlineHistoryMongoConsumerHandler) handleChatWs2Mongo(ctx context.Context, cMsg *sarama.ConsumerMessage, conversationID string, session sarama.ConsumerGroupSession) {
|
func (mc *OnlineHistoryMongoConsumerHandler) handleChatWs2Mongo(ctx context.Context, cMsg *sarama.ConsumerMessage, key string, session sarama.ConsumerGroupSession) {
|
||||||
msg := cMsg.Value
|
msg := cMsg.Value
|
||||||
msgFromMQ := pbMsg.MsgDataToMongoByMQ{}
|
msgFromMQ := pbMsg.MsgDataToMongoByMQ{}
|
||||||
err := proto.Unmarshal(msg, &msgFromMQ)
|
err := proto.Unmarshal(msg, &msgFromMQ)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.ZError(ctx, "unmarshall failed", err, "conversationID", conversationID, "len", len(msg))
|
log.ZError(ctx, "unmarshall failed", err, "key", key, "len", len(msg))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if len(msgFromMQ.MsgData) == 0 {
|
if len(msgFromMQ.MsgData) == 0 {
|
||||||
|
@ -75,7 +75,7 @@ func (g *Client) Push(ctx context.Context, userIDs []string, title, content stri
|
|||||||
go func(index int, userIDs []string) {
|
go func(index int, userIDs []string) {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
if err2 := g.batchPush(ctx, token, userIDs, pushReq); err2 != nil {
|
if err2 := g.batchPush(ctx, token, userIDs, pushReq); err2 != nil {
|
||||||
log.NewError(mcontext.GetOperationID(ctx), "batchPush failed", i, token, pushReq)
|
log.ZError(ctx, "batchPush failed", err2, "index", index, "token", token, "req", pushReq)
|
||||||
err = err2
|
err = err2
|
||||||
}
|
}
|
||||||
}(i, v.Item)
|
}(i, v.Item)
|
||||||
|
@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/internal/push/offlinepush"
|
"github.com/OpenIMSDK/Open-IM-Server/internal/push/offlinepush"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/internal/push/offlinepush/fcm"
|
"github.com/OpenIMSDK/Open-IM-Server/internal/push/offlinepush/fcm"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/internal/push/offlinepush/getui"
|
"github.com/OpenIMSDK/Open-IM-Server/internal/push/offlinepush/getui"
|
||||||
@ -14,7 +15,6 @@ import (
|
|||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/controller"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/controller"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/localcache"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/localcache"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/log"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/log"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/mcontext"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/prome"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/prome"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/discoveryregistry"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/discoveryregistry"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/errs"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/errs"
|
||||||
@ -127,8 +127,7 @@ func (p *Pusher) UnmarshalNotificationElem(bytes []byte, t interface{}) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *Pusher) Push2SuperGroup(ctx context.Context, groupID string, msg *sdkws.MsgData) (err error) {
|
func (p *Pusher) Push2SuperGroup(ctx context.Context, groupID string, msg *sdkws.MsgData) (err error) {
|
||||||
operationID := mcontext.GetOperationID(ctx)
|
log.ZDebug(ctx, "Get super group msg from msg_transfer and push msg", "msg", msg.String(), "groupID", groupID)
|
||||||
log.Debug(operationID, "Get super group msg from msg_transfer And push msg", msg.String(), groupID)
|
|
||||||
var pushToUserIDs []string
|
var pushToUserIDs []string
|
||||||
if err := callbackBeforeSuperGroupOnlinePush(ctx, groupID, msg, &pushToUserIDs); err != nil && err != errs.ErrCallbackContinue {
|
if err := callbackBeforeSuperGroupOnlinePush(ctx, groupID, msg, &pushToUserIDs); err != nil && err != errs.ErrCallbackContinue {
|
||||||
return err
|
return err
|
||||||
@ -167,7 +166,7 @@ func (p *Pusher) Push2SuperGroup(ctx context.Context, groupID string, msg *sdkws
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
log.Debug(operationID, "push_result", wsResults, "sendData", msg)
|
log.ZDebug(ctx, "get conn and online push success", "result", wsResults, "msg", msg)
|
||||||
p.successCount++
|
p.successCount++
|
||||||
isOfflinePush := utils.GetSwitchFromOptions(msg.Options, constant.IsOfflinePush)
|
isOfflinePush := utils.GetSwitchFromOptions(msg.Options, constant.IsOfflinePush)
|
||||||
if isOfflinePush {
|
if isOfflinePush {
|
||||||
@ -195,7 +194,7 @@ func (p *Pusher) Push2SuperGroup(ctx context.Context, groupID string, msg *sdkws
|
|||||||
if msg.ContentType != constant.SignalingNotification {
|
if msg.ContentType != constant.SignalingNotification {
|
||||||
notNotificationUserIDs, err := p.conversationLocalCache.GetRecvMsgNotNotifyUserIDs(ctx, groupID)
|
notNotificationUserIDs, err := p.conversationLocalCache.GetRecvMsgNotNotifyUserIDs(ctx, groupID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(operationID, utils.GetSelfFuncName(), "GetRecvMsgNotNotifyUserIDs failed", groupID)
|
log.ZError(ctx, "GetRecvMsgNotNotifyUserIDs failed", err, "groupID", groupID)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
needOfflinePushUserIDs = utils.DifferenceString(notNotificationUserIDs, needOfflinePushUserIDs)
|
needOfflinePushUserIDs = utils.DifferenceString(notNotificationUserIDs, needOfflinePushUserIDs)
|
||||||
@ -212,12 +211,12 @@ func (p *Pusher) Push2SuperGroup(ctx context.Context, groupID string, msg *sdkws
|
|||||||
}
|
}
|
||||||
err = p.offlinePushMsg(ctx, groupID, msg, offlinePushUserIDs)
|
err = p.offlinePushMsg(ctx, groupID, msg, offlinePushUserIDs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(operationID, "offlinePushMsg failed", groupID)
|
log.ZError(ctx, "offlinePushMsg failed", err, "groupID", groupID, "msg", msg)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_, err := p.GetConnsAndOnlinePush(ctx, msg, utils.IntersectString(needOfflinePushUserIDs, WebAndPcBackgroundUserIDs))
|
_, err := p.GetConnsAndOnlinePush(ctx, msg, utils.IntersectString(needOfflinePushUserIDs, WebAndPcBackgroundUserIDs))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(operationID, "offlinePushMsg failed", groupID)
|
log.ZError(ctx, "offlinePushMsg failed", err, "groupID", groupID, "msg", msg, "userIDs", utils.IntersectString(needOfflinePushUserIDs, WebAndPcBackgroundUserIDs))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package tools
|
package tools
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
@ -12,8 +13,7 @@ import (
|
|||||||
const moduleName = "cron"
|
const moduleName = "cron"
|
||||||
|
|
||||||
func StartCronTask() error {
|
func StartCronTask() error {
|
||||||
log.NewPrivateLog(moduleName)
|
log.ZInfo(context.Background(), "start cron task", "cron config", config.Config.Mongo.ChatRecordsClearTime)
|
||||||
log.NewInfo("StartCronTask", "start cron task", "cron config", config.Config.Mongo.ChatRecordsClearTime)
|
|
||||||
fmt.Println("cron task start, config", config.Config.Mongo.ChatRecordsClearTime)
|
fmt.Println("cron task start, config", config.Config.Mongo.ChatRecordsClearTime)
|
||||||
msgTool, err := InitMsgTool()
|
msgTool, err := InitMsgTool()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -183,17 +183,13 @@ type config struct {
|
|||||||
Password string `yaml:"password"`
|
Password string `yaml:"password"`
|
||||||
} `yaml:"zookeeper"`
|
} `yaml:"zookeeper"`
|
||||||
Log struct {
|
Log struct {
|
||||||
StorageLocation string `yaml:"storageLocation"`
|
StorageLocation string `yaml:"storageLocation"`
|
||||||
RotationTime int `yaml:"rotationTime"`
|
RotationTime int `yaml:"rotationTime"`
|
||||||
RemainRotationCount uint `yaml:"remainRotationCount"`
|
RemainRotationCount uint `yaml:"remainRotationCount"`
|
||||||
RemainLogLevel int `yaml:"remainLogLevel"`
|
RemainLogLevel int `yaml:"remainLogLevel"`
|
||||||
IsStdout bool `yaml:"isStdout"`
|
IsStdout bool `yaml:"isStdout"`
|
||||||
WithStack bool `yaml:"withStack"`
|
WithStack bool `yaml:"withStack"`
|
||||||
ElasticSearchSwitch bool `yaml:"elasticSearchSwitch"`
|
IsJson bool `yaml:"isJson"`
|
||||||
ElasticSearchAddr []string `yaml:"elasticSearchAddr"`
|
|
||||||
ElasticSearchUser string `yaml:"elasticSearchUser"`
|
|
||||||
ElasticSearchPassword string `yaml:"elasticSearchPassword"`
|
|
||||||
IsJson bool `yaml:"isJson"`
|
|
||||||
}
|
}
|
||||||
ModuleName struct {
|
ModuleName struct {
|
||||||
LongConnSvrName string `yaml:"longConnSvrName"`
|
LongConnSvrName string `yaml:"longConnSvrName"`
|
||||||
|
@ -1,107 +0,0 @@
|
|||||||
/*
|
|
||||||
** description("Send logs to elasticsearch hook").
|
|
||||||
** copyright('tuoyun,www.tuoyun.net').
|
|
||||||
** author("fg,Gordon@tuoyun.net").
|
|
||||||
** time(2021/3/26 17:05).
|
|
||||||
*/
|
|
||||||
package log
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"fmt"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/config"
|
|
||||||
elasticV7 "github.com/olivere/elastic/v7"
|
|
||||||
"github.com/sirupsen/logrus"
|
|
||||||
"log"
|
|
||||||
"os"
|
|
||||||
"strings"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
// esHook CUSTOMIZED ES hook
|
|
||||||
type esHook struct {
|
|
||||||
moduleName string
|
|
||||||
client *elasticV7.Client
|
|
||||||
}
|
|
||||||
|
|
||||||
// newEsHook Initialization
|
|
||||||
func newEsHook(moduleName string) *esHook {
|
|
||||||
//https://github.com/sohlich/elogrus
|
|
||||||
//client, err := elastic.NewClient(elastic.SetURL("http://localhost:9200"))
|
|
||||||
//if err != nil {
|
|
||||||
// log.Panic(err)
|
|
||||||
//}
|
|
||||||
//hook, err := elogrus.NewAsyncElasticHook(client, "localhost", logrus.DebugLevel, "mylog")
|
|
||||||
//if err != nil {
|
|
||||||
// log.Panic(err)
|
|
||||||
//}
|
|
||||||
es, err := elasticV7.NewClient(
|
|
||||||
elasticV7.SetURL(config.Config.Log.ElasticSearchAddr...),
|
|
||||||
elasticV7.SetBasicAuth(config.Config.Log.ElasticSearchUser, config.Config.Log.ElasticSearchPassword),
|
|
||||||
elasticV7.SetSniff(false),
|
|
||||||
elasticV7.SetHealthcheckInterval(60*time.Second),
|
|
||||||
elasticV7.SetErrorLog(log.New(os.Stderr, "ES:", log.LstdFlags)),
|
|
||||||
)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("failed to create Elastic V7 Client: ", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
//info, code, err := es.Ping(logConfig.ElasticSearch.EsAddr[0]).Do(context.Background())
|
|
||||||
//if err != nil {
|
|
||||||
// panic(err)
|
|
||||||
//}
|
|
||||||
//fmt.Printf("Elasticsearch returned with code %d and version %s\n", code, info.Version.Number)
|
|
||||||
//
|
|
||||||
//esversion, err := es.ElasticsearchVersion(logConfig.ElasticSearch.EsAddr[0])
|
|
||||||
//if err != nil {
|
|
||||||
// panic(err)
|
|
||||||
//}
|
|
||||||
//fmt.Printf("Elasticsearch version %s\n", esversion)
|
|
||||||
return &esHook{client: es, moduleName: moduleName}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fire log hook interface
|
|
||||||
func (hook *esHook) Fire(entry *logrus.Entry) error {
|
|
||||||
doc := newEsLog(entry)
|
|
||||||
go hook.sendEs(doc)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (hook *esHook) Levels() []logrus.Level {
|
|
||||||
return logrus.AllLevels
|
|
||||||
}
|
|
||||||
|
|
||||||
// sendEs
|
|
||||||
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(hook.moduleName).Type(doc.indexName()).BodyJson(doc).Do(context.Background())
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// appLogDocModel es model
|
|
||||||
type appLogDocModel map[string]interface{}
|
|
||||||
|
|
||||||
func newEsLog(e *logrus.Entry) appLogDocModel {
|
|
||||||
ins := make(map[string]interface{})
|
|
||||||
ins["level"] = strings.ToUpper(e.Level.String())
|
|
||||||
ins["time"] = e.Time.Format("2006-01-02 15:04:05")
|
|
||||||
for kk, vv := range e.Data {
|
|
||||||
ins[kk] = vv
|
|
||||||
}
|
|
||||||
ins["tipInfo"] = e.Message
|
|
||||||
|
|
||||||
return ins
|
|
||||||
}
|
|
||||||
|
|
||||||
// indexName es index name
|
|
||||||
func (m *appLogDocModel) indexName() string {
|
|
||||||
return time.Now().Format("2006-01-02")
|
|
||||||
}
|
|
@ -1,35 +0,0 @@
|
|||||||
/*
|
|
||||||
** description("get the name and line number of the calling file hook").
|
|
||||||
** copyright('tuoyun,www.tuoyun.net').
|
|
||||||
** author("fg,Gordon@tuoyun.net").
|
|
||||||
** time(2021/3/16 11:26).
|
|
||||||
*/
|
|
||||||
package log
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/utils"
|
|
||||||
"github.com/sirupsen/logrus"
|
|
||||||
"runtime"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
type fileHook struct{}
|
|
||||||
|
|
||||||
func newFileHook() *fileHook {
|
|
||||||
return &fileHook{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *fileHook) Levels() []logrus.Level {
|
|
||||||
return logrus.AllLevels
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *fileHook) Fire(entry *logrus.Entry) error {
|
|
||||||
var s string
|
|
||||||
_, file, line, _ := runtime.Caller(8)
|
|
||||||
i := strings.SplitAfter(file, "/")
|
|
||||||
if len(i) > 3 {
|
|
||||||
s = i[len(i)-3] + i[len(i)-2] + i[len(i)-1] + ":" + utils.IntToString(line)
|
|
||||||
}
|
|
||||||
entry.Data["FilePath"] = s
|
|
||||||
return nil
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
package log
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/config"
|
|
||||||
nested "github.com/antonfisher/nested-logrus-formatter"
|
|
||||||
rotatelogs "github.com/lestrrat-go/file-rotatelogs"
|
|
||||||
"github.com/rifflock/lfshook"
|
|
||||||
"github.com/sirupsen/logrus"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
func NewLfsHook(rotationTime time.Duration, maxRemainNum uint, moduleName string) logrus.Hook {
|
|
||||||
lfsHook := lfshook.NewHook(lfshook.WriterMap{
|
|
||||||
logrus.DebugLevel: initRotateLogs(rotationTime, maxRemainNum, "all", moduleName),
|
|
||||||
logrus.InfoLevel: initRotateLogs(rotationTime, maxRemainNum, "all", moduleName),
|
|
||||||
logrus.WarnLevel: initRotateLogs(rotationTime, maxRemainNum, "all", moduleName),
|
|
||||||
logrus.ErrorLevel: initRotateLogs(rotationTime, maxRemainNum, "all", moduleName),
|
|
||||||
}, &nested.Formatter{
|
|
||||||
TimestampFormat: "2006-01-02 15:04:05.000",
|
|
||||||
HideKeys: false,
|
|
||||||
FieldsOrder: []string{"PID", "FilePath", "OperationID", "Msg"},
|
|
||||||
})
|
|
||||||
return lfsHook
|
|
||||||
}
|
|
||||||
func initRotateLogs(rotationTime time.Duration, maxRemainNum uint, level string, moduleName string) *rotatelogs.RotateLogs {
|
|
||||||
if moduleName != "" {
|
|
||||||
moduleName = moduleName + "."
|
|
||||||
}
|
|
||||||
writer, err := rotatelogs.New(
|
|
||||||
config.Config.Log.StorageLocation+moduleName+level+"."+"%Y-%m-%d",
|
|
||||||
rotatelogs.WithRotationTime(rotationTime),
|
|
||||||
rotatelogs.WithRotationCount(maxRemainNum),
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
panic(err.Error())
|
|
||||||
} else {
|
|
||||||
return writer
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,176 +0,0 @@
|
|||||||
package log
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bufio"
|
|
||||||
"context"
|
|
||||||
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/config"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/mcontext"
|
|
||||||
|
|
||||||
//"bufio"
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
nested "github.com/antonfisher/nested-logrus-formatter"
|
|
||||||
"github.com/sirupsen/logrus"
|
|
||||||
)
|
|
||||||
|
|
||||||
var logger *LogrusLogger
|
|
||||||
var ctxLogger *LogrusLogger
|
|
||||||
|
|
||||||
type LogrusLogger struct {
|
|
||||||
*logrus.Logger
|
|
||||||
Pid int
|
|
||||||
Type string
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
logger = loggerInit("")
|
|
||||||
ctxLogger = ctxLoggerInit("")
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewPrivateLog(moduleName string) {
|
|
||||||
logger = loggerInit(moduleName)
|
|
||||||
}
|
|
||||||
|
|
||||||
func ctxLoggerInit(moduleName string) *LogrusLogger {
|
|
||||||
var ctxLogger = logrus.New()
|
|
||||||
ctxLogger.SetLevel(logrus.Level(config.Config.Log.RemainLogLevel))
|
|
||||||
src, err := os.OpenFile(os.DevNull, os.O_APPEND|os.O_WRONLY, os.ModeAppend)
|
|
||||||
if err != nil {
|
|
||||||
panic(err.Error())
|
|
||||||
}
|
|
||||||
writer := bufio.NewWriter(src)
|
|
||||||
ctxLogger.SetOutput(writer)
|
|
||||||
ctxLogger.SetFormatter(&nested.Formatter{
|
|
||||||
TimestampFormat: "2006-01-02 15:04:05.000",
|
|
||||||
HideKeys: false,
|
|
||||||
FieldsOrder: []string{"PID", "FilePath", "OperationID"},
|
|
||||||
})
|
|
||||||
if config.Config.Log.ElasticSearchSwitch {
|
|
||||||
ctxLogger.AddHook(newEsHook(moduleName))
|
|
||||||
}
|
|
||||||
//Log file segmentation hook
|
|
||||||
hook := NewLfsHook(time.Duration(config.Config.Log.RotationTime)*time.Hour, config.Config.Log.RemainRotationCount, moduleName)
|
|
||||||
ctxLogger.AddHook(hook)
|
|
||||||
return &LogrusLogger{
|
|
||||||
ctxLogger,
|
|
||||||
os.Getpid(),
|
|
||||||
"ctxLogger",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func loggerInit(moduleName string) *LogrusLogger {
|
|
||||||
var logger = logrus.New()
|
|
||||||
//All logs will be printed
|
|
||||||
logger.SetLevel(logrus.Level(config.Config.Log.RemainLogLevel))
|
|
||||||
//Close std console output
|
|
||||||
//os.O_WRONLY | os.O_CREATE | os.O_APPEND
|
|
||||||
src, err := os.OpenFile(os.DevNull, os.O_APPEND|os.O_WRONLY, os.ModeAppend)
|
|
||||||
if err != nil {
|
|
||||||
panic(err.Error())
|
|
||||||
}
|
|
||||||
writer := bufio.NewWriter(src)
|
|
||||||
logger.SetOutput(writer)
|
|
||||||
// logger.SetOutput(os.Stdout)
|
|
||||||
//Log Console Print Style Setting
|
|
||||||
|
|
||||||
logger.SetFormatter(&nested.Formatter{
|
|
||||||
TimestampFormat: "2006-01-02 15:04:05.000",
|
|
||||||
HideKeys: false,
|
|
||||||
FieldsOrder: []string{"PID", "FilePath", "OperationID"},
|
|
||||||
})
|
|
||||||
logger.SetFormatter(&logrus.JSONFormatter{})
|
|
||||||
//File name and line number display hook
|
|
||||||
logger.AddHook(newFileHook())
|
|
||||||
|
|
||||||
//Send logs to elasticsearch hook
|
|
||||||
if config.Config.Log.ElasticSearchSwitch {
|
|
||||||
logger.AddHook(newEsHook(moduleName))
|
|
||||||
}
|
|
||||||
//Log file segmentation hook
|
|
||||||
hook := NewLfsHook(time.Duration(config.Config.Log.RotationTime)*time.Hour, config.Config.Log.RemainRotationCount, moduleName)
|
|
||||||
logger.AddHook(hook)
|
|
||||||
return &LogrusLogger{
|
|
||||||
logger,
|
|
||||||
os.Getpid(),
|
|
||||||
"",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func InfoKv(ctx context.Context, msg string, keysAndValues ...interface{}) {
|
|
||||||
operationID := mcontext.GetOperationID(ctx)
|
|
||||||
logger.WithFields(logrus.Fields{
|
|
||||||
"OperationID": operationID,
|
|
||||||
"PID": logger.Pid,
|
|
||||||
"Msg": msg,
|
|
||||||
}).Infoln(keysAndValues)
|
|
||||||
}
|
|
||||||
|
|
||||||
func Info(OperationID string, args ...interface{}) {
|
|
||||||
logger.WithFields(logrus.Fields{
|
|
||||||
"OperationID": OperationID,
|
|
||||||
"PID": logger.Pid,
|
|
||||||
}).Infoln(args)
|
|
||||||
}
|
|
||||||
|
|
||||||
func Error(OperationID string, args ...interface{}) {
|
|
||||||
logger.WithFields(logrus.Fields{
|
|
||||||
"OperationID": OperationID,
|
|
||||||
"PID": logger.Pid,
|
|
||||||
}).Errorln(args)
|
|
||||||
}
|
|
||||||
|
|
||||||
func Debug(OperationID string, args ...interface{}) {
|
|
||||||
logger.WithFields(logrus.Fields{
|
|
||||||
"OperationID": OperationID,
|
|
||||||
"PID": logger.Pid,
|
|
||||||
}).Debugln(args)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated
|
|
||||||
func Warning(token, OperationID, format string, args ...interface{}) {
|
|
||||||
logger.WithFields(logrus.Fields{
|
|
||||||
"PID": logger.Pid,
|
|
||||||
"OperationID": OperationID,
|
|
||||||
}).Warningf(format, args...)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// internal method
|
|
||||||
func argsHandle(OperationID string, fields logrus.Fields, args []interface{}) {
|
|
||||||
for i := 0; i < len(args); i += 2 {
|
|
||||||
if i+1 < len(args) {
|
|
||||||
fields[fmt.Sprintf("%v", args[i])] = args[i+1]
|
|
||||||
} else {
|
|
||||||
fields[fmt.Sprintf("%v", args[i])] = ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fields["OperationID"] = OperationID
|
|
||||||
fields["PID"] = logger.Pid
|
|
||||||
}
|
|
||||||
func NewInfo(OperationID string, args ...interface{}) {
|
|
||||||
logger.WithFields(logrus.Fields{
|
|
||||||
"OperationID": OperationID,
|
|
||||||
"PID": logger.Pid,
|
|
||||||
}).Infoln(args)
|
|
||||||
}
|
|
||||||
func NewError(OperationID string, args ...interface{}) {
|
|
||||||
logger.WithFields(logrus.Fields{
|
|
||||||
"OperationID": OperationID,
|
|
||||||
"PID": logger.Pid,
|
|
||||||
}).Errorln(args)
|
|
||||||
}
|
|
||||||
func NewDebug(OperationID string, args ...interface{}) {
|
|
||||||
logger.WithFields(logrus.Fields{
|
|
||||||
"OperationID": OperationID,
|
|
||||||
"PID": logger.Pid,
|
|
||||||
}).Debugln(args)
|
|
||||||
}
|
|
||||||
func NewWarn(OperationID string, args ...interface{}) {
|
|
||||||
logger.WithFields(logrus.Fields{
|
|
||||||
"OperationID": OperationID,
|
|
||||||
"PID": logger.Pid,
|
|
||||||
}).Warnln(args)
|
|
||||||
}
|
|
@ -1,35 +0,0 @@
|
|||||||
package prome
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"encoding/json"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/log"
|
|
||||||
|
|
||||||
"google.golang.org/grpc"
|
|
||||||
"google.golang.org/grpc/peer"
|
|
||||||
)
|
|
||||||
|
|
||||||
func UnaryServerInterceptorPrometheus(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) {
|
|
||||||
remote, _ := peer.FromContext(ctx)
|
|
||||||
remoteAddr := remote.Addr.String()
|
|
||||||
|
|
||||||
in, _ := json.Marshal(req)
|
|
||||||
inStr := string(in)
|
|
||||||
log.NewInfo("ip", remoteAddr, "access_start", info.FullMethod, "in", inStr)
|
|
||||||
|
|
||||||
start := time.Now()
|
|
||||||
defer func() {
|
|
||||||
out, _ := json.Marshal(resp)
|
|
||||||
outStr := string(out)
|
|
||||||
duration := int64(time.Since(start) / time.Millisecond)
|
|
||||||
if duration >= 500 {
|
|
||||||
log.NewInfo("ip", remoteAddr, "access_end", info.FullMethod, "in", inStr, "out", outStr, "err", err, "duration/ms", duration)
|
|
||||||
} else {
|
|
||||||
log.NewInfo("ip", remoteAddr, "access_end", info.FullMethod, "in", inStr, "out", outStr, "err", err, "duration/ms", duration)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
resp, err = handler(ctx, req)
|
|
||||||
return
|
|
||||||
}
|
|
@ -7,8 +7,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/config"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/config"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/constant"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/log"
|
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/mw"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/mw"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/network"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/network"
|
||||||
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/prome"
|
"github.com/OpenIMSDK/Open-IM-Server/pkg/common/prome"
|
||||||
@ -22,7 +20,6 @@ import (
|
|||||||
|
|
||||||
func Start(rpcPort int, rpcRegisterName string, prometheusPort int, rpcFn func(client discoveryregistry.SvcDiscoveryRegistry, server *grpc.Server) error, options ...grpc.ServerOption) error {
|
func Start(rpcPort int, rpcRegisterName string, prometheusPort int, rpcFn func(client discoveryregistry.SvcDiscoveryRegistry, server *grpc.Server) error, options ...grpc.ServerOption) error {
|
||||||
fmt.Println("start", rpcRegisterName, "server, port: ", rpcPort, "prometheusPort:", prometheusPort, ", OpenIM version: ", config.Version)
|
fmt.Println("start", rpcRegisterName, "server, port: ", rpcPort, "prometheusPort:", prometheusPort, ", OpenIM version: ", config.Version)
|
||||||
log.NewPrivateLog(constant.LogFileName)
|
|
||||||
listener, err := net.Listen("tcp", net.JoinHostPort(config.Config.ListenIP, strconv.Itoa(rpcPort)))
|
listener, err := net.Listen("tcp", net.JoinHostPort(config.Config.ListenIP, strconv.Itoa(rpcPort)))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
Loading…
x
Reference in New Issue
Block a user