|
|
|
|
// Copyright 2022, Chef. All rights reserved.
|
|
|
|
|
// https://github.com/q191201771/lal
|
|
|
|
|
//
|
|
|
|
|
// Use of this source code is governed by a MIT-style license
|
|
|
|
|
// that can be found in the License file.
|
|
|
|
|
//
|
|
|
|
|
// Author: Chef (191201771@qq.com)
|
|
|
|
|
|
|
|
|
|
package base
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
|
|
"github.com/q191201771/naza/pkg/nazalog"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type LogDump struct {
|
|
|
|
|
log nazalog.Logger
|
|
|
|
|
debugMaxNum int
|
|
|
|
|
|
|
|
|
|
debugCount int
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// NewLogDump
|
|
|
|
|
//
|
|
|
|
|
// @param debugMaxNum: 日志最小级别为debug时,使用debug打印日志次数的阈值
|
|
|
|
|
//
|
|
|
|
|
func NewLogDump(log nazalog.Logger, debugMaxNum int) LogDump {
|
|
|
|
|
return LogDump{
|
|
|
|
|
log: log,
|
|
|
|
|
debugMaxNum: debugMaxNum,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ld *LogDump) ShouldDump() bool {
|
|
|
|
|
switch ld.log.GetOption().Level {
|
|
|
|
|
case nazalog.LevelTrace:
|
|
|
|
|
return true
|
|
|
|
|
case nazalog.LevelDebug:
|
|
|
|
|
if ld.debugCount >= ld.debugMaxNum {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
ld.debugCount++
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Outf
|
|
|
|
|
//
|
|
|
|
|
// 调用之前需调用 ShouldDump
|
|
|
|
|
// 将 ShouldDump 独立出来的目的是避免不需要打印日志时, Outf 调用前构造实参的开销,比如
|
|
|
|
|
// ld.Outf("hex=%s", hex.Dump(buf))
|
|
|
|
|
// 这个hex.Dump调用
|
|
|
|
|
//
|
|
|
|
|
func (ld *LogDump) Outf(format string, v ...interface{}) {
|
|
|
|
|
ld.log.Out(ld.log.GetOption().Level, 3, fmt.Sprintf(format, v...))
|
|
|
|
|
}
|