make logger more clear with highlight component and use package name for default component
This commit is contained in:
parent
e70928cc6f
commit
42e3aaff35
1 changed files with 35 additions and 10 deletions
|
|
@ -21,6 +21,8 @@ const (
|
||||||
WARN = zerolog.WarnLevel
|
WARN = zerolog.WarnLevel
|
||||||
ERROR = zerolog.ErrorLevel
|
ERROR = zerolog.ErrorLevel
|
||||||
FATAL = zerolog.FatalLevel
|
FATAL = zerolog.FatalLevel
|
||||||
|
|
||||||
|
Component = "component"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
@ -50,6 +52,18 @@ func init() {
|
||||||
|
|
||||||
// Custom formatter to handle multiline strings and JSON objects
|
// Custom formatter to handle multiline strings and JSON objects
|
||||||
FormatFieldValue: formatFieldValue,
|
FormatFieldValue: formatFieldValue,
|
||||||
|
PartsOrder: []string{
|
||||||
|
zerolog.TimestampFieldName,
|
||||||
|
zerolog.LevelFieldName,
|
||||||
|
Component,
|
||||||
|
zerolog.CallerFieldName,
|
||||||
|
zerolog.MessageFieldName,
|
||||||
|
},
|
||||||
|
FieldsExclude: []string{Component},
|
||||||
|
FormatPrepare: func(fields map[string]any) error {
|
||||||
|
fields[Component] = fmt.Sprintf("\x1b[33m%v\x1b[0m", fields[Component])
|
||||||
|
return nil
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
logger = zerolog.New(consoleWriter).With().Timestamp().Caller().Logger()
|
logger = zerolog.New(consoleWriter).With().Timestamp().Caller().Logger()
|
||||||
|
|
@ -193,7 +207,19 @@ func ConfigureFromEnv() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getCallerSkip() int {
|
func getPackageNameFromFile(filePath string) string {
|
||||||
|
dir := filepath.Dir(filePath)
|
||||||
|
importPath := filepath.ToSlash(dir)
|
||||||
|
|
||||||
|
parts := strings.Split(importPath, "/")
|
||||||
|
if len(parts) == 0 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
return parts[len(parts)-1]
|
||||||
|
}
|
||||||
|
|
||||||
|
func getCallerSkip() (int, string) {
|
||||||
for i := 2; i < 15; i++ {
|
for i := 2; i < 15; i++ {
|
||||||
pc, file, _, ok := runtime.Caller(i)
|
pc, file, _, ok := runtime.Caller(i)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|
@ -217,10 +243,10 @@ func getCallerSkip() int {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
return i - 1
|
return i - 1, getPackageNameFromFile(file)
|
||||||
}
|
}
|
||||||
|
|
||||||
return 3
|
return 3, "<unknown>"
|
||||||
}
|
}
|
||||||
|
|
||||||
//nolint:zerologlint
|
//nolint:zerologlint
|
||||||
|
|
@ -246,14 +272,16 @@ func logMessage(level LogLevel, component string, message string, fields map[str
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
skip := getCallerSkip()
|
skip, pkg := getCallerSkip()
|
||||||
|
|
||||||
event := getEvent(logger, level)
|
event := getEvent(logger, level)
|
||||||
|
|
||||||
if component != "" {
|
if component == "" {
|
||||||
event.Str("component", component)
|
component = pkg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event.Str(Component, component)
|
||||||
|
|
||||||
appendFields(event, fields)
|
appendFields(event, fields)
|
||||||
event.CallerSkipFrame(skip).Msg(message)
|
event.CallerSkipFrame(skip).Msg(message)
|
||||||
|
|
||||||
|
|
@ -261,10 +289,7 @@ func logMessage(level LogLevel, component string, message string, fields map[str
|
||||||
if fileLogger.GetLevel() != zerolog.NoLevel {
|
if fileLogger.GetLevel() != zerolog.NoLevel {
|
||||||
fileEvent := getEvent(fileLogger, level)
|
fileEvent := getEvent(fileLogger, level)
|
||||||
|
|
||||||
if component != "" {
|
fileEvent.Str(Component, component)
|
||||||
fileEvent.Str("component", component)
|
|
||||||
}
|
|
||||||
// fileEvent.Str("caller", fmt.Sprintf("%s:%d (%s)", callerFile, callerLine, callerFunc))
|
|
||||||
|
|
||||||
appendFields(fileEvent, fields)
|
appendFields(fileEvent, fields)
|
||||||
fileEvent.CallerSkipFrame(skip).Msg(message)
|
fileEvent.CallerSkipFrame(skip).Msg(message)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue