|
|
|
package glog
|
|
|
|
|
|
|
|
import (
|
|
|
|
"gitea.drugeyes.vip/pharnexbase/utils/enum"
|
|
|
|
"github.com/go-kratos/kratos/v2/log"
|
|
|
|
"github.com/go-kratos/kratos/v2/middleware/tracing"
|
|
|
|
"os"
|
|
|
|
)
|
|
|
|
|
|
|
|
type Logger interface {
|
|
|
|
log.Logger
|
|
|
|
Close() error
|
|
|
|
}
|
|
|
|
|
|
|
|
type LoggerConfig struct {
|
|
|
|
env string
|
|
|
|
id string
|
|
|
|
name string
|
|
|
|
version string
|
|
|
|
aliLogConfig AliLogConfig
|
|
|
|
}
|
|
|
|
|
|
|
|
type AliLogConfig struct {
|
|
|
|
AccessKey string
|
|
|
|
AccessSecret string
|
|
|
|
Endpoint string
|
|
|
|
Project string
|
|
|
|
LogStore string
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewLogger(c *LoggerConfig) (log.Logger, func()) {
|
|
|
|
|
|
|
|
var l Logger
|
|
|
|
|
|
|
|
switch c.env {
|
|
|
|
default:
|
|
|
|
l = NewStdLogger(os.Stdout)
|
|
|
|
case enum.EnvLocal:
|
|
|
|
l = NewStdLogger(os.Stdout)
|
|
|
|
case enum.EnvDevelop, enum.EnvPre, enum.EnvProduct:
|
|
|
|
l = NewAliyunLog(
|
|
|
|
WithAccessKey(c.aliLogConfig.AccessKey),
|
|
|
|
WithAccessSecret(c.aliLogConfig.AccessSecret),
|
|
|
|
WithEndpoint(c.aliLogConfig.Endpoint),
|
|
|
|
WithProject(c.aliLogConfig.Project),
|
|
|
|
WithLogstore(c.aliLogConfig.LogStore),
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
logger := log.With(l,
|
|
|
|
"ts", log.DefaultTimestamp,
|
|
|
|
"caller", log.DefaultCaller,
|
|
|
|
"env", c.env,
|
|
|
|
"service.id", "id",
|
|
|
|
"service.name", "Name",
|
|
|
|
"service.version", "Version",
|
|
|
|
"trace.id", tracing.TraceID(),
|
|
|
|
"span.id", tracing.SpanID(),
|
|
|
|
)
|
|
|
|
|
|
|
|
return logger, func() {
|
|
|
|
l.Close()
|
|
|
|
}
|
|
|
|
}
|