log/基于golangci-lint修改代码;

This commit is contained in:
2023-04-14 19:35:21 +08:00
parent 1cdffbd6ea
commit 25bea8ca37
9 changed files with 171 additions and 12 deletions

View File

@@ -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)

View File

@@ -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"`
}

View File

@@ -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{

View File

@@ -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,

View File

@@ -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)

View File

@@ -5,6 +5,11 @@ import (
"sync"
)
const (
bytesBufferInitialSize = 512
bytesBufferMaximumSize = 4096
)
type BytesBufferPool interface {
Get() *bytes.Buffer
Put(buffer *bytes.Buffer)

View File

@@ -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)

View File

@@ -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 {