update field (#8)
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is failing

Reviewed-on: #8
Co-authored-by: andrey <andrey@4devs.io>
Co-committed-by: andrey <andrey@4devs.io>
This commit was merged in pull request #8.
This commit is contained in:
2024-01-02 15:45:34 +03:00
parent a3091c4eb6
commit abbcf0b1a0
30 changed files with 1893 additions and 1825 deletions

View File

@@ -2,7 +2,6 @@ package log
import (
"context"
"errors"
"fmt"
"io"
"os"
@@ -14,10 +13,7 @@ import (
var _ io.Writer = (Logger)(nil)
var (
ErrIgnoredKey = errors.New("ignored key without a value")
ErrNonStringKeys = errors.New("ignored key-value pairs with non-string keys")
)
const badKey = "!BADKEY"
func writeOutput(_ int, err error) {
if err != nil {
@@ -52,7 +48,7 @@ func (l Logger) writef(ctx context.Context, level level.Level, format string, ar
return l(ctx, data.SetLevel(level).SetMessagef(format, args...))
}
func (l Logger) kv(ctx context.Context, args ...interface{}) field.Fields {
func (l Logger) kv(_ context.Context, args ...interface{}) field.Fields {
kvEntry := entry.Get()
defer func() {
@@ -67,21 +63,20 @@ func (l Logger) kv(ctx context.Context, args ...interface{}) field.Fields {
}
if i == len(args)-1 {
writeOutput(l.write(ctx, level.Critical, fmt.Sprint("Ignored key without a value.", args[i]), kvEntry.Fields()...))
kvEntry = kvEntry.AddAny(badKey, args[i])
break
}
i++
key, val := args[i-1], args[i]
key, val := args[i], args[i+1]
if keyStr, ok := key.(string); ok {
kvEntry = kvEntry.AddAny(keyStr, val)
i++
continue
}
writeOutput(l.write(ctx, level.Critical, fmt.Sprint("Ignored key-value pairs with non-string keys.", key, val), kvEntry.Fields()...))
kvEntry = kvEntry.AddAny(badKey, args[i])
}
return kvEntry.Fields()