Skip to content
Snippets Groups Projects
Commit 2c671a69 authored by Semyon Krestyaninov's avatar Semyon Krestyaninov
Browse files

Merge branch 'feature/PRXS-951-1964-ZapCustomFields' into feature/PRXS-951-1961-ZapIntergration

parents 4d7c1a06 6c0ecb0e
No related branches found
No related tags found
No related merge requests found
package zap package zap
import ( import (
"context"
"fmt" "fmt"
"git.perx.ru/perxis/perxis-go/id"
"git.perx.ru/perxis/perxis-go/pkg/auth"
"go.uber.org/zap" "go.uber.org/zap"
"go.uber.org/zap/zapcore" "go.uber.org/zap/zapcore"
) )
...@@ -24,38 +27,49 @@ func Event(event string) zapcore.Field { ...@@ -24,38 +27,49 @@ func Event(event string) zapcore.Field {
return zap.String("event", event) return zap.String("event", event)
} }
// Object возвращает поле и устанавливает передаваемый аргумент в качестве идентификатора объекта в формате GlobalID. // Object возвращает поле и устанавливает передаваемый аргумент в качестве идентификатора объекта в формате ObjectID.
// Поддерживает один из типов: string, fmt.Stringer. Если передан аргумент другого типа, в качестве идентификатора объекта // Поддерживаемые типы: string, fmt.Stringer.
// будет установлен "unknown". // Если передан аргумент другого типа, будет произведена попытка привести переданное значение к ObjectID.
func Object(v any) zapcore.Field { func Object(v any) zapcore.Field {
var object string var object = unknownObject
switch value := v.(type) { switch value := v.(type) {
case string: case string:
object = value object = value
case fmt.Stringer: case fmt.Stringer:
object = value.String() object = value.String()
default: default:
object = unknownObject oid, err := id.FromObject(v)
if err == nil {
object = oid.String()
}
} }
return zap.String("object", object) return zap.String("object", object)
} }
// Caller возвращает поле и устанавливает передаваемый аргумент в качестве "вызывающего" в формате GlobalID. // Caller возвращает поле и устанавливает передаваемый аргумент в качестве "вызывающего" в формате ObjectID.
// Поддерживает один из типов: string, fmt.Stringer. Если передан аргумент другого типа, в качестве вызывающего // Поддерживаемые типы: string, fmt.Stringer.
// будет установлен "unknown". // Если передан аргумент другого типа, будет произведена попытка привести переданное значение к ObjectID.
func Caller(v any) zapcore.Field { func Caller(v any) zapcore.Field {
var caller string var caller = unknownCaller
switch value := v.(type) { switch value := v.(type) {
case string: case string:
caller = value caller = value
case fmt.Stringer: case fmt.Stringer:
caller = value.String() caller = value.String()
default: default:
caller = unknownCaller oid, err := id.FromObject(v)
if err == nil {
caller = oid.String()
}
} }
return zap.String("caller", caller) return zap.String("caller", caller)
} }
// CallerFromContext извлекает auth.Principal из контекста и устанавливает его в качестве "вызывающего" в формате ObjectID.
func CallerFromContext(ctx context.Context) zapcore.Field {
return Caller(auth.GetPrincipal(ctx))
}
func Attr(attr any) zapcore.Field { func Attr(attr any) zapcore.Field {
return zap.Any("attr", attr) return zap.Any("attr", attr)
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment