util/id: add uuid v8 #382

Merged
vtolstov merged 4 commits from id into v3 2024-12-22 22:23:01 +03:00
3 changed files with 19 additions and 4 deletions
Showing only changes of commit d01561365c - Show all commits

View File

@ -30,7 +30,6 @@ type Options struct {
StacktraceKey string StacktraceKey string
// Name holds the logger name // Name holds the logger name
Name string Name string
// Out holds the output writer // Out holds the output writer
Out io.Writer Out io.Writer
// Context holds exernal options // Context holds exernal options
@ -39,12 +38,10 @@ type Options struct {
Meter meter.Meter Meter meter.Meter
// TimeFunc used to obtain current time // TimeFunc used to obtain current time
TimeFunc func() time.Time TimeFunc func() time.Time
// Fields holds additional metadata // Fields holds additional metadata
Fields []interface{} Fields []interface{}
// ContextAttrFuncs contains funcs that executed before log func on context // ContextAttrFuncs contains funcs that executed before log func on context
ContextAttrFuncs []ContextAttrFunc ContextAttrFuncs []ContextAttrFunc
// callerSkipCount number of frmaes to skip // callerSkipCount number of frmaes to skip
CallerSkipCount int CallerSkipCount int
// The logging level the logger should log // The logging level the logger should log

View File

@ -270,7 +270,7 @@ func (s *slogLogger) printLog(ctx context.Context, lvl logger.Level, msg string,
} }
} }
if s.opts.AddStacktrace && lvl == logger.ErrorLevel { if (s.opts.AddStacktrace || lvl == logger.FatalLevel) || (s.opts.AddStacktrace && lvl == logger.ErrorLevel) {
stackInfo := make([]byte, 1024*1024) stackInfo := make([]byte, 1024*1024)
if stackSize := runtime.Stack(stackInfo, false); stackSize > 0 { if stackSize := runtime.Stack(stackInfo, false); stackSize > 0 {
traceLines := reTrace.Split(string(stackInfo[:stackSize]), -1) traceLines := reTrace.Split(string(stackInfo[:stackSize]), -1)

View File

@ -15,6 +15,24 @@ import (
"go.unistack.org/micro/v3/metadata" "go.unistack.org/micro/v3/metadata"
) )
func TestStacktrace(t *testing.T) {
ctx := context.TODO()
buf := bytes.NewBuffer(nil)
l := NewLogger(logger.WithLevel(logger.ErrorLevel), logger.WithOutput(buf),
WithHandlerFunc(slog.NewTextHandler),
logger.WithAddStacktrace(true),
)
if err := l.Init(logger.WithFields("key1", "val1")); err != nil {
t.Fatal(err)
}
l.Error(ctx, "msg1", errors.New("err"))
if !bytes.Contains(buf.Bytes(), []byte(`slog_test.go:29`)) {
t.Fatalf("logger error not works, buf contains: %s", buf.Bytes())
}
}
func TestWithFields(t *testing.T) { func TestWithFields(t *testing.T) {
ctx := context.TODO() ctx := context.TODO()
buf := bytes.NewBuffer(nil) buf := bytes.NewBuffer(nil)