This commit is contained in:
wangchuxiao
2023-01-12 15:55:44 +08:00
parent 47766a2c2c
commit 6205c67b70
17 changed files with 284 additions and 181 deletions
+121 -1
View File
@@ -2,7 +2,9 @@ package log
import (
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/trace_log"
"bufio"
"context"
//"bufio"
"fmt"
@@ -16,6 +18,7 @@ import (
)
var logger *Logger
var ctxLogger *Logger
type Logger struct {
*logrus.Logger
@@ -24,12 +27,35 @@ type Logger struct {
func init() {
logger = loggerInit("")
ctxLogger = ctxLoggerInit("")
}
func NewPrivateLog(moduleName string) {
logger = loggerInit(moduleName)
}
func ctxLoggerInit(moduleName string) *Logger {
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(&logrus.JSONFormatter{
TimestampFormat: "2006-01-02 15:04:05.000",
DataKey: "args",
FieldMap: nil,
CallerPrettyfier: nil,
PrettyPrint: false,
})
return &Logger{
ctxLogger,
os.Getpid(),
}
}
func loggerInit(moduleName string) *Logger {
var logger = logrus.New()
//All logs will be printed
@@ -44,11 +70,13 @@ func loggerInit(moduleName string) *Logger {
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"},
})
//File name and line number display hook
logger.AddHook(newFileHook())
@@ -200,3 +228,95 @@ func NewWarn(OperationID string, args ...interface{}) {
"PID": logger.Pid,
}).Warnln(args)
}
func ShowLog(ctx context.Context) {
t := ctx.Value(trace_log.TraceLogKey).(*trace_log.ApiInfo)
OperationID := trace_log.GetOperationID(ctx)
if ctx.Value(trace_log.TraceLogKey).(*trace_log.ApiInfo).GinCtx != nil {
ctxLogger.WithFields(logrus.Fields{
"OperationID": OperationID,
"PID": ctxLogger.Pid,
}).Infoln("api: ", t.ApiName)
} else {
ctxLogger.WithFields(logrus.Fields{
"OperationID": OperationID,
"PID": ctxLogger.Pid,
}).Infoln("rpc: ", t.ApiName)
}
for _, v := range *t.Funcs {
if v.Err != nil {
ctxLogger.WithFields(logrus.Fields{
"OperationID": OperationID,
"PID": ctxLogger.Pid,
"FilePath": v.File,
}).Errorln("func: ", v.FuncName, " args: ", v.Args, v.Err.Error())
} else {
switch v.LogLevel {
case logrus.InfoLevel:
ctxLogger.WithFields(logrus.Fields{
"OperationID": OperationID,
"PID": ctxLogger.Pid,
"FilePath": v.File,
}).Infoln("func: ", v.FuncName, " args: ", v.Args)
case logrus.DebugLevel:
ctxLogger.WithFields(logrus.Fields{
"OperationID": OperationID,
"PID": ctxLogger.Pid,
"FilePath": v.File,
}).Debugln("func: ", v.FuncName, " args: ", v.Args)
case logrus.WarnLevel:
ctxLogger.WithFields(logrus.Fields{
"OperationID": OperationID,
"PID": ctxLogger.Pid,
"FilePath": v.File,
}).Warnln("func: ", v.FuncName, " args: ", v.Args)
}
}
}
}
func InfoWithCtx(ctx context.Context, args ...interface{}) {
t := ctx.Value(trace_log.TraceLogKey).(*trace_log.ApiInfo)
OperationID := trace_log.GetOperationID(ctx)
for _, v := range *t.Funcs {
logger.WithFields(logrus.Fields{
"OperationID": OperationID,
"PID": logger.Pid,
}).Infoln(v.Args, args)
}
}
func DebugWithCtx(ctx context.Context, args ...interface{}) {
t := ctx.Value(trace_log.TraceLogKey).(*trace_log.ApiInfo)
OperationID := trace_log.GetOperationID(ctx)
for _, v := range *t.Funcs {
logger.WithFields(logrus.Fields{
"OperationID": OperationID,
"PID": logger.Pid,
}).Debugln(v.Args, args)
}
}
func ErrorWithCtx(ctx context.Context, args ...interface{}) {
t := ctx.Value(trace_log.TraceLogKey).(*trace_log.ApiInfo)
OperationID := trace_log.GetOperationID(ctx)
for _, v := range *t.Funcs {
if v.Err != nil {
logger.WithFields(logrus.Fields{
"OperationID": OperationID,
"PID": logger.Pid,
}).Errorln(v.Err, v.Args, args)
}
}
}
func WarnWithCtx(ctx context.Context, args ...interface{}) {
t := ctx.Value(trace_log.TraceLogKey).(*trace_log.ApiInfo)
OperationID := trace_log.GetOperationID(ctx)
for _, v := range *t.Funcs {
logger.WithFields(logrus.Fields{
"OperationID": OperationID,
"PID": logger.Pid,
}).Warnln(v.Args, args)
}
}