log/基于golangci-lint修改代码;
This commit is contained in:
@@ -37,7 +37,7 @@ func (entry Entry) AddCallerSkip(n int) Entry {
|
||||
|
||||
// WithField 增加1组键值对
|
||||
func (entry Entry) WithField(key string, value any) Entry {
|
||||
return entry.WithFields(KV{Key: key, Value: value})
|
||||
return entry.WithFields(Field(key, value))
|
||||
}
|
||||
|
||||
// WithFields 增加键值对
|
||||
@@ -198,7 +198,7 @@ func (entry Entry) log(ctx context.Context, level Level, message string) {
|
||||
readonlyEntry.Caller = getCaller(newEntry.callerSkip)
|
||||
}
|
||||
if newEntry.GetReportStack() || level <= newEntry.logger.GetReportStackLevel() {
|
||||
readonlyEntry.Stack = getStack(newEntry.callerSkip, 32)
|
||||
readonlyEntry.Stack = getStack(newEntry.callerSkip, maximumFrames)
|
||||
}
|
||||
for _, processor := range newEntry.logger.getLevelProcessors(level) {
|
||||
processor.Process(ctx, readonlyEntry)
|
||||
|
||||
@@ -3,13 +3,15 @@ package logsdk
|
||||
// Field 返回键值对
|
||||
func Field(key string, value any) KV {
|
||||
return KV{
|
||||
Value: value,
|
||||
Key: key,
|
||||
Value: value,
|
||||
}
|
||||
}
|
||||
|
||||
// KV 是日志记录中的键值对
|
||||
//
|
||||
//nolint:govet
|
||||
type KV struct {
|
||||
Value any `json:"v"`
|
||||
Key string `json:"k"`
|
||||
Value any `json:"v"`
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ func (level Level) MarshalText() ([]byte, error) {
|
||||
return []byte(LevelDebugValue), nil
|
||||
case LevelTrace:
|
||||
return []byte(LevelTraceValue), nil
|
||||
case LevelDisabled:
|
||||
return []byte(levelDisabledValue), nil
|
||||
}
|
||||
return nil, fmt.Errorf("not a valid log level %d", level)
|
||||
}
|
||||
@@ -61,6 +63,8 @@ const (
|
||||
LevelInfoValue = "info"
|
||||
LevelDebugValue = "debug"
|
||||
LevelTraceValue = "trace"
|
||||
|
||||
levelDisabledValue = "disabled"
|
||||
)
|
||||
|
||||
var AllLevels = []Level{
|
||||
|
||||
@@ -111,11 +111,12 @@ func (logger *Logger) Reset() {
|
||||
// Exit 退出程序, 执行的具体过程可以通过 SetExit 指定
|
||||
func (logger *Logger) Exit(code int) {
|
||||
logger.lock.RLock()
|
||||
defer logger.lock.RUnlock()
|
||||
if logger.exit == nil {
|
||||
exit := logger.exit
|
||||
logger.lock.RUnlock()
|
||||
if exit == nil {
|
||||
os.Exit(code)
|
||||
}
|
||||
logger.exit(code)
|
||||
exit(code)
|
||||
}
|
||||
|
||||
// SetExit 指定退出程序时执行的函数
|
||||
@@ -134,7 +135,7 @@ func (logger *Logger) getLevelProcessors(level Level) []EntryProcessor {
|
||||
func (logger *Logger) newEntry() Entry {
|
||||
return Entry{
|
||||
logger: logger,
|
||||
callerSkip: logger.GetCallerSkip() + 2,
|
||||
callerSkip: logger.GetCallerSkip() + entrySkipOffset,
|
||||
reportCaller: logger.GetReportCaller(),
|
||||
reportStack: logger.GetReportStack(),
|
||||
initialized: true,
|
||||
|
||||
@@ -60,7 +60,7 @@ func newConfig(opts ...Option) *config {
|
||||
opt.apply(cfg)
|
||||
}
|
||||
if !cfg.hasPool {
|
||||
cfg.bytesBufferPool = NewBytesBufferPool(512, 4096)
|
||||
cfg.bytesBufferPool = NewBytesBufferPool(bytesBufferInitialSize, bytesBufferMaximumSize)
|
||||
}
|
||||
if cfg.output == nil {
|
||||
cfg.output = NewSyncWriter(os.Stderr)
|
||||
|
||||
@@ -5,6 +5,11 @@ import (
|
||||
"sync"
|
||||
)
|
||||
|
||||
const (
|
||||
bytesBufferInitialSize = 512
|
||||
bytesBufferMaximumSize = 4096
|
||||
)
|
||||
|
||||
type BytesBufferPool interface {
|
||||
Get() *bytes.Buffer
|
||||
Put(buffer *bytes.Buffer)
|
||||
|
||||
@@ -18,7 +18,7 @@ type syncWriter struct {
|
||||
lock sync.Mutex
|
||||
}
|
||||
|
||||
func (w *syncWriter) Write(p []byte) (n int, err error) {
|
||||
func (w *syncWriter) Write(p []byte) (int, error) {
|
||||
w.lock.Lock()
|
||||
defer w.lock.Unlock()
|
||||
return w.writer.Write(p)
|
||||
|
||||
@@ -4,6 +4,12 @@ import (
|
||||
"runtime"
|
||||
)
|
||||
|
||||
const (
|
||||
maximumFrames = 32
|
||||
getCallerSkipOffset = 2
|
||||
entrySkipOffset = 2
|
||||
)
|
||||
|
||||
// Frame 调用相关信息
|
||||
type Frame struct {
|
||||
Function string `json:"func"`
|
||||
@@ -18,7 +24,7 @@ func (frame Frame) IsValid() bool {
|
||||
|
||||
func getCaller(skip int) Frame {
|
||||
pc := make([]uintptr, 1)
|
||||
n := runtime.Callers(skip+2, pc)
|
||||
n := runtime.Callers(skip+getCallerSkipOffset, pc)
|
||||
frame, _ := runtime.CallersFrames(pc[:n]).Next()
|
||||
if frame.PC == 0 {
|
||||
return Frame{}
|
||||
@@ -32,7 +38,7 @@ func getCaller(skip int) Frame {
|
||||
|
||||
func getStack(skip, maximumFrames int) []Frame {
|
||||
pc := make([]uintptr, maximumFrames)
|
||||
n := runtime.Callers(skip+2, pc)
|
||||
n := runtime.Callers(skip+getCallerSkipOffset, pc)
|
||||
stack := make([]Frame, 0, n)
|
||||
frames := runtime.CallersFrames(pc[:n])
|
||||
for {
|
||||
|
||||
Reference in New Issue
Block a user