log/新增Logger.*ReportStackLevel;
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user