log/新增Logger.*ReportStackLevel;

This commit is contained in:
2023-04-13 18:54:34 +08:00
parent f58f914826
commit 216f3a1012
3 changed files with 117 additions and 6 deletions

View File

@@ -198,7 +198,7 @@ func (entry Entry) log(ctx context.Context, level Level, message string) {
if newEntry.GetReportCaller() {
readonlyEntry.Caller = getCaller(newEntry.callerSkip)
}
if newEntry.GetReportStack() {
if newEntry.GetReportStack() || level <= newEntry.logger.GetReportStackLevel() {
readonlyEntry.Stack = getStack(newEntry.callerSkip, 32)
}
for _, processor := range newEntry.logger.getLevelProcessors(level) {

View File

@@ -10,6 +10,7 @@ import (
func New() *Logger {
logger := &Logger{}
logger.entry.logger = logger
logger.Reset()
return logger
}
@@ -22,11 +23,12 @@ type Logger struct {
exit func(code int) // protected by lock
levelProcessors levelProcessors // protected by lock
entry
lock sync.RWMutex
level atomic.Int32
callerSkip atomic.Int32
reportCaller atomic.Bool
reportStack atomic.Bool
lock sync.RWMutex
level atomic.Int32
reportStackLevel atomic.Int32
callerSkip atomic.Int32
reportCaller atomic.Bool
reportStack atomic.Bool
}
// AddProcessor 把日志处理器增加到 Logger
@@ -82,6 +84,16 @@ func (logger *Logger) SetReportStack(reportStack bool) {
logger.reportStack.Store(reportStack)
}
// GetReportStackLevel 获取自动添加调用栈对应的日志等级
func (logger *Logger) GetReportStackLevel() Level {
return Level(logger.reportStackLevel.Load())
}
// SetReportStackLevel 设置日志等级小于等于 level 时自动添加调用栈
func (logger *Logger) SetReportStackLevel(level Level) {
logger.reportStackLevel.Store(int32(level))
}
// Reset 把 Logger 重置到初始状态
func (logger *Logger) Reset() {
logger.lock.Lock()
@@ -90,6 +102,7 @@ func (logger *Logger) Reset() {
logger.lock.Unlock()
logger.SetLevel(LevelInfo)
logger.SetReportStackLevel(LevelWarn)
logger.SetCallerSkip(0)
logger.SetReportCaller(false)
logger.SetReportStack(false)