mirror of
https://github.com/zeromicro/go-zero.git
synced 2025-01-23 17:20:24 +08:00
add logx.DisableStat() to disable stat logs (#893)
* add logx.DisableStat() to disable stat logs * refactor logx code
This commit is contained in:
parent
af1730079e
commit
872e75e10d
@ -20,37 +20,37 @@ func WithDuration(d time.Duration) Logger {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (l *durationLogger) Error(v ...interface{}) {
|
func (l *durationLogger) Error(v ...interface{}) {
|
||||||
if shouldLog(ErrorLevel) {
|
if shallLog(ErrorLevel) {
|
||||||
l.write(errorLog, levelError, formatWithCaller(fmt.Sprint(v...), durationCallerDepth))
|
l.write(errorLog, levelError, formatWithCaller(fmt.Sprint(v...), durationCallerDepth))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *durationLogger) Errorf(format string, v ...interface{}) {
|
func (l *durationLogger) Errorf(format string, v ...interface{}) {
|
||||||
if shouldLog(ErrorLevel) {
|
if shallLog(ErrorLevel) {
|
||||||
l.write(errorLog, levelError, formatWithCaller(fmt.Sprintf(format, v...), durationCallerDepth))
|
l.write(errorLog, levelError, formatWithCaller(fmt.Sprintf(format, v...), durationCallerDepth))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *durationLogger) Info(v ...interface{}) {
|
func (l *durationLogger) Info(v ...interface{}) {
|
||||||
if shouldLog(InfoLevel) {
|
if shallLog(InfoLevel) {
|
||||||
l.write(infoLog, levelInfo, fmt.Sprint(v...))
|
l.write(infoLog, levelInfo, fmt.Sprint(v...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *durationLogger) Infof(format string, v ...interface{}) {
|
func (l *durationLogger) Infof(format string, v ...interface{}) {
|
||||||
if shouldLog(InfoLevel) {
|
if shallLog(InfoLevel) {
|
||||||
l.write(infoLog, levelInfo, fmt.Sprintf(format, v...))
|
l.write(infoLog, levelInfo, fmt.Sprintf(format, v...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *durationLogger) Slow(v ...interface{}) {
|
func (l *durationLogger) Slow(v ...interface{}) {
|
||||||
if shouldLog(ErrorLevel) {
|
if shallLog(ErrorLevel) {
|
||||||
l.write(slowLog, levelSlow, fmt.Sprint(v...))
|
l.write(slowLog, levelSlow, fmt.Sprint(v...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *durationLogger) Slowf(format string, v ...interface{}) {
|
func (l *durationLogger) Slowf(format string, v ...interface{}) {
|
||||||
if shouldLog(ErrorLevel) {
|
if shallLog(ErrorLevel) {
|
||||||
l.write(slowLog, levelSlow, fmt.Sprintf(format, v...))
|
l.write(slowLog, levelSlow, fmt.Sprintf(format, v...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,12 +65,14 @@ var (
|
|||||||
timeFormat = "2006-01-02T15:04:05.000Z07"
|
timeFormat = "2006-01-02T15:04:05.000Z07"
|
||||||
writeConsole bool
|
writeConsole bool
|
||||||
logLevel uint32
|
logLevel uint32
|
||||||
infoLog io.WriteCloser
|
// use uint32 for atomic operations
|
||||||
errorLog io.WriteCloser
|
disableStat uint32
|
||||||
severeLog io.WriteCloser
|
infoLog io.WriteCloser
|
||||||
slowLog io.WriteCloser
|
errorLog io.WriteCloser
|
||||||
statLog io.WriteCloser
|
severeLog io.WriteCloser
|
||||||
stackLog io.Writer
|
slowLog io.WriteCloser
|
||||||
|
statLog io.WriteCloser
|
||||||
|
stackLog io.Writer
|
||||||
|
|
||||||
once sync.Once
|
once sync.Once
|
||||||
initialized uint32
|
initialized uint32
|
||||||
@ -195,6 +197,10 @@ func Disable() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DisableStat() {
|
||||||
|
atomic.StoreUint32(&disableStat, 1)
|
||||||
|
}
|
||||||
|
|
||||||
// Error writes v into error log.
|
// Error writes v into error log.
|
||||||
func Error(v ...interface{}) {
|
func Error(v ...interface{}) {
|
||||||
ErrorCaller(1, v...)
|
ErrorCaller(1, v...)
|
||||||
@ -313,7 +319,7 @@ func createOutput(path string) (io.WriteCloser, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func errorSync(msg string, callDepth int) {
|
func errorSync(msg string, callDepth int) {
|
||||||
if shouldLog(ErrorLevel) {
|
if shallLog(ErrorLevel) {
|
||||||
outputError(errorLog, msg, callDepth)
|
outputError(errorLog, msg, callDepth)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -363,7 +369,7 @@ func handleOptions(opts []LogOption) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func infoSync(msg string) {
|
func infoSync(msg string) {
|
||||||
if shouldLog(InfoLevel) {
|
if shallLog(InfoLevel) {
|
||||||
output(infoLog, levelInfo, msg)
|
output(infoLog, levelInfo, msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -481,29 +487,33 @@ func setupWithVolume(c LogConf) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func severeSync(msg string) {
|
func severeSync(msg string) {
|
||||||
if shouldLog(SevereLevel) {
|
if shallLog(SevereLevel) {
|
||||||
output(severeLog, levelSevere, fmt.Sprintf("%s\n%s", msg, string(debug.Stack())))
|
output(severeLog, levelSevere, fmt.Sprintf("%s\n%s", msg, string(debug.Stack())))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func shouldLog(level uint32) bool {
|
func shallLog(level uint32) bool {
|
||||||
return atomic.LoadUint32(&logLevel) <= level
|
return atomic.LoadUint32(&logLevel) <= level
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func shallLogStat() bool {
|
||||||
|
return atomic.LoadUint32(&disableStat) == 0
|
||||||
|
}
|
||||||
|
|
||||||
func slowSync(msg string) {
|
func slowSync(msg string) {
|
||||||
if shouldLog(ErrorLevel) {
|
if shallLog(ErrorLevel) {
|
||||||
output(slowLog, levelSlow, msg)
|
output(slowLog, levelSlow, msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func stackSync(msg string) {
|
func stackSync(msg string) {
|
||||||
if shouldLog(ErrorLevel) {
|
if shallLog(ErrorLevel) {
|
||||||
output(stackLog, levelError, fmt.Sprintf("%s\n%s", msg, string(debug.Stack())))
|
output(stackLog, levelError, fmt.Sprintf("%s\n%s", msg, string(debug.Stack())))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func statSync(msg string) {
|
func statSync(msg string) {
|
||||||
if shouldLog(InfoLevel) {
|
if shallLogStat() && shallLog(InfoLevel) {
|
||||||
output(statLog, levelStat, msg)
|
output(statLog, levelStat, msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -246,6 +246,17 @@ func TestDisable(t *testing.T) {
|
|||||||
assert.Nil(t, Close())
|
assert.Nil(t, Close())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDisableStat(t *testing.T) {
|
||||||
|
DisableStat()
|
||||||
|
|
||||||
|
const message = "hello there"
|
||||||
|
writer := new(mockWriter)
|
||||||
|
statLog = writer
|
||||||
|
atomic.StoreUint32(&initialized, 1)
|
||||||
|
Stat(message)
|
||||||
|
assert.Equal(t, 0, writer.builder.Len())
|
||||||
|
}
|
||||||
|
|
||||||
func TestWithGzip(t *testing.T) {
|
func TestWithGzip(t *testing.T) {
|
||||||
fn := WithGzip()
|
fn := WithGzip()
|
||||||
var opt logOptions
|
var opt logOptions
|
||||||
|
@ -18,37 +18,37 @@ type traceLogger struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (l *traceLogger) Error(v ...interface{}) {
|
func (l *traceLogger) Error(v ...interface{}) {
|
||||||
if shouldLog(ErrorLevel) {
|
if shallLog(ErrorLevel) {
|
||||||
l.write(errorLog, levelError, formatWithCaller(fmt.Sprint(v...), durationCallerDepth))
|
l.write(errorLog, levelError, formatWithCaller(fmt.Sprint(v...), durationCallerDepth))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *traceLogger) Errorf(format string, v ...interface{}) {
|
func (l *traceLogger) Errorf(format string, v ...interface{}) {
|
||||||
if shouldLog(ErrorLevel) {
|
if shallLog(ErrorLevel) {
|
||||||
l.write(errorLog, levelError, formatWithCaller(fmt.Sprintf(format, v...), durationCallerDepth))
|
l.write(errorLog, levelError, formatWithCaller(fmt.Sprintf(format, v...), durationCallerDepth))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *traceLogger) Info(v ...interface{}) {
|
func (l *traceLogger) Info(v ...interface{}) {
|
||||||
if shouldLog(InfoLevel) {
|
if shallLog(InfoLevel) {
|
||||||
l.write(infoLog, levelInfo, fmt.Sprint(v...))
|
l.write(infoLog, levelInfo, fmt.Sprint(v...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *traceLogger) Infof(format string, v ...interface{}) {
|
func (l *traceLogger) Infof(format string, v ...interface{}) {
|
||||||
if shouldLog(InfoLevel) {
|
if shallLog(InfoLevel) {
|
||||||
l.write(infoLog, levelInfo, fmt.Sprintf(format, v...))
|
l.write(infoLog, levelInfo, fmt.Sprintf(format, v...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *traceLogger) Slow(v ...interface{}) {
|
func (l *traceLogger) Slow(v ...interface{}) {
|
||||||
if shouldLog(ErrorLevel) {
|
if shallLog(ErrorLevel) {
|
||||||
l.write(slowLog, levelSlow, fmt.Sprint(v...))
|
l.write(slowLog, levelSlow, fmt.Sprint(v...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *traceLogger) Slowf(format string, v ...interface{}) {
|
func (l *traceLogger) Slowf(format string, v ...interface{}) {
|
||||||
if shouldLog(ErrorLevel) {
|
if shallLog(ErrorLevel) {
|
||||||
l.write(slowLog, levelSlow, fmt.Sprintf(format, v...))
|
l.write(slowLog, levelSlow, fmt.Sprintf(format, v...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user