package lib import ( "fmt" dlog "github.com/ichunt2019/lxLog/log" "strings" ) // 通用DLTag常量定义 const ( DLTagUndefind = "_undef" DLTagMySqlFailed = "_com_mysql_failure" DLTagRedisFailed = "_com_redis_failure" DLTagMySqlSuccess = "_com_mysql_success" DLTagRedisSuccess = "_com_redis_success" DLTagThriftFailed = "_com_thrift_failure" DLTagThriftSuccess = "_com_thrift_success" DLTagHTTPSuccess = "_com_http_success" DLTagHTTPFailed = "_com_http_failure" DLTagTCPFailed = "_com_tcp_failure" DLTagRequestIn = "_com_request_in" DLTagRequestOut = "_com_request_out" ) const ( _dlTag = "dltag" _traceId = "traceid" _spanId = "spanid" _childSpanId = "cspanid" _dlTagBizPrefix = "_com_" _dlTagBizUndef = "_com_undef" ) var Log *Logger type Trace struct { TraceId string SpanId string Caller string SrcMethod string HintCode int64 HintContent string } type TraceContext struct { Trace CSpanId string } type Logger struct { } func (l *Logger) TagInfo(trace *TraceContext, dltag string, m map[string]interface{}) { m[_dlTag] = checkDLTag(dltag) m[_traceId] = trace.TraceId m[_childSpanId] = trace.CSpanId m[_spanId] = trace.SpanId dlog.Instance("request").Info(parseParams(m)) } func (l *Logger) TagWarn(trace *TraceContext, dltag string, m map[string]interface{}) { m[_dlTag] = checkDLTag(dltag) m[_traceId] = trace.TraceId m[_childSpanId] = trace.CSpanId m[_spanId] = trace.SpanId dlog.Instance("request").Warn(parseParams(m)) } func (l *Logger) TagError(trace *TraceContext, dltag string, m map[string]interface{}) { m[_dlTag] = checkDLTag(dltag) m[_traceId] = trace.TraceId m[_childSpanId] = trace.CSpanId m[_spanId] = trace.SpanId dlog.Instance("request").Error(parseParams(m)) } func (l *Logger) TagTrace(trace *TraceContext, dltag string, m map[string]interface{}) { m[_dlTag] = checkDLTag(dltag) m[_traceId] = trace.TraceId m[_childSpanId] = trace.CSpanId m[_spanId] = trace.SpanId dlog.Instance("request").Trace(parseParams(m)) } func (l *Logger) TagDebug(trace *TraceContext, dltag string, m map[string]interface{}) { m[_dlTag] = checkDLTag(dltag) m[_traceId] = trace.TraceId m[_childSpanId] = trace.CSpanId m[_spanId] = trace.SpanId dlog.Instance("request").Debug(parseParams(m)) } func (l *Logger) Close() { dlog.Instance("request").Close() } // 生成业务dltag func CreateBizDLTag(tagName string) string { if tagName == "" { return _dlTagBizUndef } return _dlTagBizPrefix + tagName } // 校验dltag合法性 func checkDLTag(dltag string) string { if strings.HasPrefix(dltag, _dlTagBizPrefix) { return dltag } if strings.HasPrefix(dltag, "_com_") { return dltag } if dltag == DLTagUndefind { return dltag } return dltag } //map格式化为string func parseParams(m map[string]interface{}) string { var dltag string = "_undef" if _dltag, _have := m["dltag"]; _have { if __val, __ok := _dltag.(string); __ok { dltag = __val } } for _key, _val := range m { if _key == "dltag" { continue } dltag = dltag + "||" + fmt.Sprintf("%v=%+v", _key, _val) } dltag = strings.Trim(fmt.Sprintf("%q", dltag), "\"") return dltag }