add log level token
Gitea/etcdmtr/pipeline/head This commit looks good
Details
Gitea/etcdmtr/pipeline/head This commit looks good
Details
This commit is contained in:
parent
a3c5bd05e1
commit
b5976adcdf
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue