add logger path option
Gitea/etcdmtr/pipeline/head This commit looks good
Details
Gitea/etcdmtr/pipeline/head This commit looks good
Details
This commit is contained in:
parent
b5976adcdf
commit
20a027af93
|
@ -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))
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue