You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kratos/pkg/log/field.go

59 lines
1.7 KiB

package log
import (
"math"
"time"
"github.com/bilibili/kratos/pkg/log/internal/core"
)
// D represents a map of entry level data used for structured logging.
// type D map[string]interface{}
type D = core.Field
// KVString construct Field with string value.
func KVString(key string, value string) D {
return D{Key: key, Type: core.StringType, StringVal: value}
}
// KVInt construct Field with int value.
func KVInt(key string, value int) D {
return D{Key: key, Type: core.IntTpye, Int64Val: int64(value)}
}
// KVInt64 construct D with int64 value.
func KVInt64(key string, value int64) D {
return D{Key: key, Type: core.Int64Type, Int64Val: value}
}
// KVUint construct Field with uint value.
func KVUint(key string, value uint) D {
return D{Key: key, Type: core.UintType, Int64Val: int64(value)}
}
// KVUint64 construct Field with uint64 value.
func KVUint64(key string, value uint64) D {
return D{Key: key, Type: core.Uint64Type, Int64Val: int64(value)}
}
// KVFloat32 construct Field with float32 value.
func KVFloat32(key string, value float32) D {
return D{Key: key, Type: core.Float32Type, Int64Val: int64(math.Float32bits(value))}
}
// KVFloat64 construct Field with float64 value.
func KVFloat64(key string, value float64) D {
return D{Key: key, Type: core.Float64Type, Int64Val: int64(math.Float64bits(value))}
}
// KVDuration construct Field with Duration value.
func KVDuration(key string, value time.Duration) D {
return D{Key: key, Type: core.DurationType, Int64Val: int64(value)}
}
// KV return a log kv for logging field.
// NOTE: use KV{type name} can avoid object alloc and get better performance. []~( ̄▽ ̄)~*干杯
func KV(key string, value interface{}) D {
return D{Key: key, Value: value}
}