chore: add comments (#4618)

This commit is contained in:
Kevin Wan
2025-01-31 22:42:46 +08:00
committed by GitHub
parent 84db9bcd15
commit 4e71e95e44
3 changed files with 34 additions and 21 deletions

View File

@@ -560,7 +560,7 @@ func shallLogStat() bool {
// If we check shallLog here, the fmt.Sprint might be called even if the log level is not enabled. // If we check shallLog here, the fmt.Sprint might be called even if the log level is not enabled.
// The caller should check shallLog before calling this function. // The caller should check shallLog before calling this function.
func writeDebug(val any, fields ...LogField) { func writeDebug(val any, fields ...LogField) {
getWriter().Debug(val, combineGlobalFields(addCaller(fields...))...) getWriter().Debug(val, mergeGlobalFields(addCaller(fields...))...)
} }
// writeError writes v into the error log. // writeError writes v into the error log.
@@ -568,7 +568,7 @@ func writeDebug(val any, fields ...LogField) {
// If we check shallLog here, the fmt.Sprint might be called even if the log level is not enabled. // If we check shallLog here, the fmt.Sprint might be called even if the log level is not enabled.
// The caller should check shallLog before calling this function. // The caller should check shallLog before calling this function.
func writeError(val any, fields ...LogField) { func writeError(val any, fields ...LogField) {
getWriter().Error(val, combineGlobalFields(addCaller(fields...))...) getWriter().Error(val, mergeGlobalFields(addCaller(fields...))...)
} }
// writeInfo writes v into info log. // writeInfo writes v into info log.
@@ -576,7 +576,7 @@ func writeError(val any, fields ...LogField) {
// If we check shallLog here, the fmt.Sprint might be called even if the log level is not enabled. // If we check shallLog here, the fmt.Sprint might be called even if the log level is not enabled.
// The caller should check shallLog before calling this function. // The caller should check shallLog before calling this function.
func writeInfo(val any, fields ...LogField) { func writeInfo(val any, fields ...LogField) {
getWriter().Info(val, combineGlobalFields(addCaller(fields...))...) getWriter().Info(val, mergeGlobalFields(addCaller(fields...))...)
} }
// writeSevere writes v into severe log. // writeSevere writes v into severe log.
@@ -592,7 +592,7 @@ func writeSevere(msg string) {
// If we check shallLog here, the fmt.Sprint might be called even if the log level is not enabled. // If we check shallLog here, the fmt.Sprint might be called even if the log level is not enabled.
// The caller should check shallLog before calling this function. // The caller should check shallLog before calling this function.
func writeSlow(val any, fields ...LogField) { func writeSlow(val any, fields ...LogField) {
getWriter().Slow(val, combineGlobalFields(addCaller(fields...))...) getWriter().Slow(val, mergeGlobalFields(addCaller(fields...))...)
} }
// writeStack writes v into stack log. // writeStack writes v into stack log.
@@ -608,5 +608,5 @@ func writeStack(msg string) {
// If we check shallLog here, the fmt.Sprint might be called even if the log level is not enabled. // If we check shallLog here, the fmt.Sprint might be called even if the log level is not enabled.
// The caller should check shallLog before calling this function. // The caller should check shallLog before calling this function.
func writeStat(msg string) { func writeStat(msg string) {
getWriter().Stat(msg, combineGlobalFields(addCaller())...) getWriter().Stat(msg, mergeGlobalFields(addCaller())...)
} }

View File

@@ -206,8 +206,9 @@ func (l *richLogger) WithFields(fields ...LogField) Logger {
func (l *richLogger) buildFields(fields ...LogField) []LogField { func (l *richLogger) buildFields(fields ...LogField) []LogField {
fields = append(l.fields, fields...) fields = append(l.fields, fields...)
// caller field should always appear together with global fields
fields = append(fields, Field(callerKey, getCaller(callerDepth+l.callerSkip))) fields = append(fields, Field(callerKey, getCaller(callerDepth+l.callerSkip)))
fields = combineGlobalFields(fields) fields = mergeGlobalFields(fields)
if l.ctx == nil { if l.ctx == nil {
return fields return fields
@@ -235,7 +236,7 @@ func (l *richLogger) buildFields(fields ...LogField) []LogField {
func (l *richLogger) debug(v any, fields ...LogField) { func (l *richLogger) debug(v any, fields ...LogField) {
if shallLog(DebugLevel) { if shallLog(DebugLevel) {
getWriter().Debug(v, (l.buildFields(fields...))...) getWriter().Debug(v, l.buildFields(fields...)...)
} }
} }

View File

@@ -17,15 +17,27 @@ import (
) )
type ( type (
// Writer is the interface for writing logs.
// It's designed to let users customize their own log writer,
// such as writing logs to a kafka, a database, or using third-party loggers.
Writer interface { Writer interface {
// Alert sends an alert message, if your writer implemented alerting functionality.
Alert(v any) Alert(v any)
// Close closes the writer.
Close() error Close() error
// Debug logs a message at debug level.
Debug(v any, fields ...LogField) Debug(v any, fields ...LogField)
// Error logs a message at error level.
Error(v any, fields ...LogField) Error(v any, fields ...LogField)
// Info logs a message at info level.
Info(v any, fields ...LogField) Info(v any, fields ...LogField)
// Severe logs a message at severe level.
Severe(v any) Severe(v any)
// Slow logs a message at slow level.
Slow(v any, fields ...LogField) Slow(v any, fields ...LogField)
// Stack logs a message at error level.
Stack(v any) Stack(v any)
// Stat logs a message at stat level.
Stat(v any, fields ...LogField) Stat(v any, fields ...LogField)
} }
@@ -324,20 +336,6 @@ func buildPlainFields(fields logEntry) []string {
return items return items
} }
func combineGlobalFields(fields []LogField) []LogField {
globals := globalFields.Load()
if globals == nil {
return fields
}
gf := globals.([]LogField)
ret := make([]LogField, 0, len(gf)+len(fields))
ret = append(ret, gf...)
ret = append(ret, fields...)
return ret
}
func marshalJson(t interface{}) ([]byte, error) { func marshalJson(t interface{}) ([]byte, error) {
var buf bytes.Buffer var buf bytes.Buffer
encoder := json.NewEncoder(&buf) encoder := json.NewEncoder(&buf)
@@ -352,6 +350,20 @@ func marshalJson(t interface{}) ([]byte, error) {
return buf.Bytes(), err return buf.Bytes(), err
} }
func mergeGlobalFields(fields []LogField) []LogField {
globals := globalFields.Load()
if globals == nil {
return fields
}
gf := globals.([]LogField)
ret := make([]LogField, 0, len(gf)+len(fields))
ret = append(ret, gf...)
ret = append(ret, fields...)
return ret
}
func output(writer io.Writer, level string, val any, fields ...LogField) { func output(writer io.Writer, level string, val any, fields ...LogField) {
// only truncate string content, don't know how to truncate the values of other types. // only truncate string content, don't know how to truncate the values of other types.
if v, ok := val.(string); ok { if v, ok := val.(string); ok {