add log level token
Gitea/etcdmtr/pipeline/head This commit looks good Details

This commit is contained in:
dave 2024-02-29 23:47:59 -08:00
parent a3c5bd05e1
commit b5976adcdf
2 changed files with 43 additions and 15 deletions

View File

@ -10,7 +10,6 @@ import (
"go.uber.org/zap"
"golang.org/x/net/context"
"io/ioutil"
"log"
"os"
"time"
)
@ -123,7 +122,7 @@ func main() {
if !args.Insecure {
if args.ClientKey == "" || args.ClientCert == "" || args.ServerCA == "" {
log.Fatalf("must set --insecure if not passing --client-cert, --client-key, and --ca")
logger.Fatal("must set --insecure if not passing --client-cert, --client-key, and --ca")
}
}
@ -160,26 +159,26 @@ func main() {
for _, member := range members.Members {
endpoint := member.ClientURLs[0]
log.Printf("trying to reach %s", endpoint)
logger.Info("trying to reach %s", endpoint)
contextCtx, _ := context.WithTimeout(context.TODO(), operationTimeout)
is_leader, err := contactMember(contextCtx, client, endpoint)
if err != nil {
log.Printf("couldn't reach member %s: %s", endpoint, err)
logger.Warning("couldn't reach member %s: %s", endpoint, err)
memberErrors = append(memberErrors, err)
continue
}
log.Printf("reached member %s - is leader? %v", endpoint, is_leader)
logger.Info("reached member %s - is leader? %v", endpoint, is_leader)
}
if args.ExpectedMembers > 0 {
if numMembers != args.ExpectedMembers {
log.Printf("found different number of members than expected: %d", numMembers)
logger.Error("found different number of members than expected: %d", numMembers)
os.Exit(1)
}
if len(memberErrors) > 0 {
log.Printf("encountered an error when contacting %d members", len(memberErrors))
logger.Error("encountered an error when contacting %d members", len(memberErrors))
os.Exit(1)
}
}

View File

@ -4,6 +4,7 @@ import (
"fmt"
"os"
"strings"
"time"
)
type LogLevel int64
@ -17,6 +18,12 @@ const (
LOGLEVEL_FATAL
)
var LOGLEVEL_NAMES = []string{"DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL", "FATAL"}
func (l LogLevel) String() string {
return LOGLEVEL_NAMES[l]
}
type ELog struct {
parent *ELog
name string
@ -31,6 +38,7 @@ const (
LOGFORMAT_STRING LogFormatTokenValue = iota
LOGFORMAT_TIMESTAMP
LOGFORMAT_NAME
LOGFORMAT_LEVEL
LOGFORMAT_MESSAGE
)
@ -62,7 +70,7 @@ func (f *LogFormat) Append(token *LogFormatToken) *LogFormat {
return f
}
// AppendToken isn't valid for LOGFORMAT_STRING
// AppendToken isn't valid for LOGFORMAT_STRING or LOGFORMAT_TIMESTAMP TODO
func (f *LogFormat) AppendToken(token LogFormatTokenValue) *LogFormat {
return f.Append(&LogFormatToken{
Token: token,
@ -76,17 +84,31 @@ func (f *LogFormat) AppendString(str string) *LogFormat {
})
}
func (f *LogFormat) AppendTimestamp(format string) *LogFormat {
return f.Append(&LogFormatToken{
Token: LOGFORMAT_TIMESTAMP,
Value: format,
})
}
func NewRootLogger() *ELog {
logger := &ELog{
Format: NewFormat().
return NewRootLoggerWithFormat(
NewFormat().
AppendString("[").
AppendToken(LOGFORMAT_TIMESTAMP).
AppendTimestamp("2006-01-02 15:04:05.999").
AppendString("] ").
AppendToken(LOGFORMAT_LEVEL).
AppendString(" ").
AppendToken(LOGFORMAT_NAME).
AppendString(": ").
AppendToken(LOGFORMAT_MESSAGE),
)
}
func NewRootLoggerWithFormat(format *LogFormat) *ELog {
return &ELog{
Format: format,
}
return logger
}
func (e *ELog) _Log(level LogLevel, message string, a ...any) (n int, err error) {
@ -100,13 +122,15 @@ func (e *ELog) _Log(level LogLevel, message string, a ...any) (n int, err error)
case LOGFORMAT_STRING:
log.WriteString(tail.Value)
case LOGFORMAT_TIMESTAMP:
log.WriteString("TS")
log.WriteString(formatTime(tail.Value))
case LOGFORMAT_NAME:
log.WriteString("main")
case LOGFORMAT_MESSAGE:
log.WriteString(fmt.Sprintf(message, a...))
case LOGFORMAT_LEVEL:
log.WriteString(level.String())
default:
panic(fmt.Sprintf("bad log format token: %s", token))
panic(fmt.Sprintf("bad log format token: %v", token))
}
tail = tail.Next
}
@ -138,7 +162,12 @@ func (e *ELog) Critical(message string, a ...any) (n int, err error) {
}
func (e *ELog) Fatal(message string, a ...any) (n int, err error) {
e._Log(LOGLEVEL_FATAL, message, a...)
_, _ = e._Log(LOGLEVEL_FATAL, message, a...)
os.Exit(1)
return 0, nil
}
func formatTime(format string) string {
now := time.Now()
return now.Format(format)
}