add logger path option
Gitea/etcdmtr/pipeline/head This commit looks good Details

This commit is contained in:
dave 2024-03-30 01:11:59 -07:00
parent b5976adcdf
commit 2e935eb0d0
1 changed files with 31 additions and 2 deletions

View File

@ -37,6 +37,7 @@ type LogFormatTokenValue int64
const (
LOGFORMAT_STRING LogFormatTokenValue = iota
LOGFORMAT_TIMESTAMP
LOGFORMAT_PATH
LOGFORMAT_NAME
LOGFORMAT_LEVEL
LOGFORMAT_MESSAGE
@ -99,7 +100,9 @@ func NewRootLogger() *ELog {
AppendString("] ").
AppendToken(LOGFORMAT_LEVEL).
AppendString(" ").
AppendToken(LOGFORMAT_NAME).
AppendToken(LOGFORMAT_PATH).
//AppendString(" ").
//AppendToken(LOGFORMAT_NAME).
AppendString(": ").
AppendToken(LOGFORMAT_MESSAGE),
)
@ -107,14 +110,38 @@ func NewRootLogger() *ELog {
func NewRootLoggerWithFormat(format *LogFormat) *ELog {
return &ELog{
name: "main",
Format: format,
}
}
func (e *ELog) GetLogger(name string) *ELog {
return &ELog{
parent: e,
name: name,
Level: e.Level,
DefaultLevel: e.DefaultLevel,
}
}
func (e *ELog) _Log(level LogLevel, message string, a ...any) (n int, err error) {
return e._DoLog(level, nil, message, a...)
}
func (e *ELog) _DoLog(level LogLevel, path []string, message string, a ...any) (n int, err error) {
if level < e.Level {
return 0, nil
}
if path == nil {
path = make([]string, 0)
}
path = append([]string{e.name}, path...)
if e.parent != nil {
return e.parent._DoLog(level, path, message, a...)
}
log := strings.Builder{}
tail := e.Format.Head
for tail != nil {
@ -124,11 +151,13 @@ func (e *ELog) _Log(level LogLevel, message string, a ...any) (n int, err error)
case LOGFORMAT_TIMESTAMP:
log.WriteString(formatTime(tail.Value))
case LOGFORMAT_NAME:
log.WriteString("main")
log.WriteString(path[len(path)-1])
case LOGFORMAT_MESSAGE:
log.WriteString(fmt.Sprintf(message, a...))
case LOGFORMAT_LEVEL:
log.WriteString(level.String())
case LOGFORMAT_PATH:
log.WriteString(strings.Join(path, "."))
default:
panic(fmt.Sprintf("bad log format token: %v", token))
}