63 lines
1.4 KiB
Go
63 lines
1.4 KiB
Go
package logger
|
||
|
||
import (
|
||
"os"
|
||
|
||
"github.com/go-kratos/kratos/v2/log"
|
||
"github.com/go-kratos/kratos/v2/middleware/tracing"
|
||
|
||
"github.com/tx7do/kratos-bootstrap/logger/fluent"
|
||
"github.com/tx7do/kratos-bootstrap/logger/logrus"
|
||
"github.com/tx7do/kratos-bootstrap/logger/tencent"
|
||
"github.com/tx7do/kratos-bootstrap/logger/zap"
|
||
|
||
conf "github.com/tx7do/kratos-bootstrap/api/gen/go/conf/v1"
|
||
"github.com/tx7do/kratos-bootstrap/utils"
|
||
)
|
||
|
||
// NewLogger 创建一个新的日志记录器
|
||
func NewLogger(cfg *conf.Logger) log.Logger {
|
||
if cfg == nil {
|
||
return NewStdLogger()
|
||
}
|
||
|
||
switch Type(cfg.Type) {
|
||
default:
|
||
fallthrough
|
||
case Std:
|
||
return NewStdLogger()
|
||
case Fluent:
|
||
return fluent.NewLogger(cfg)
|
||
case Zap:
|
||
return zap.NewLogger(cfg)
|
||
case Logrus:
|
||
return logrus.NewLogger(cfg)
|
||
case Aliyun:
|
||
return nil
|
||
case Tencent:
|
||
return tencent.NewLogger(cfg)
|
||
}
|
||
}
|
||
|
||
// NewLoggerProvider 创建一个新的日志记录器提供者
|
||
func NewLoggerProvider(cfg *conf.Logger, serviceInfo *utils.ServiceInfo) log.Logger {
|
||
l := NewLogger(cfg)
|
||
|
||
return log.With(
|
||
l,
|
||
"service.id", serviceInfo.Id,
|
||
"service.name", serviceInfo.Name,
|
||
"service.version", serviceInfo.Version,
|
||
"ts", log.DefaultTimestamp,
|
||
"caller", log.DefaultCaller,
|
||
"trace_id", tracing.TraceID(),
|
||
"span_id", tracing.SpanID(),
|
||
)
|
||
}
|
||
|
||
// NewStdLogger 创建一个新的日志记录器 - Kratos内置,控制台输出
|
||
func NewStdLogger() log.Logger {
|
||
l := log.NewStdLogger(os.Stdout)
|
||
return l
|
||
}
|