Add log format functions (#1)

This commit is contained in:
Elwin Tamminga 2019-04-01 16:20:53 +02:00 committed by Gitea
parent 3cbefefec5
commit 3540a5778c
2 changed files with 36 additions and 10 deletions

36
log.go
View File

@ -10,30 +10,46 @@ import (
// All log functions // All log functions
var ( var (
Debug = logFunc(LevelDebug) Debug = logFunc(LevelDebug)
Info = logFunc(LevelInfo) Debugf = logfFunc(LevelDebug)
Warning = logFunc(LevelWarning) Info = logFunc(LevelInfo)
Error = logFunc(LevelError) Infof = logfFunc(LevelInfo)
Critical = logFunc(LevelCritical) Warning = logFunc(LevelWarning)
Warningf = logfFunc(LevelWarning)
Error = logFunc(LevelError)
Errorf = logfFunc(LevelError)
Critical = logFunc(LevelCritical)
Criticalf = logfFunc(LevelCritical)
) )
func logFunc(level LevelType) func(...interface{}) { func logFunc(level LevelType) func(...interface{}) {
return func(message ...interface{}) { return func(message ...interface{}) {
writeMessage(level, message) writeMessage(level, ``, message)
}
}
func logfFunc(level LevelType) func(string, ...interface{}) {
return func(format string, a ...interface{}) {
writeMessage(level, format, a)
} }
} }
var mu sync.Mutex var mu sync.Mutex
func writeMessage(level LevelType, message []interface{}) { func writeMessage(level LevelType, format string, message []interface{}) {
if MinLevel > level { if MinLevel > level {
return return
} }
entry := LogEntry{ entry := LogEntry{
Level: level, Level: level,
Time: time.Now(), Time: time.Now(),
Message: fmt.Sprint(message...), }
if format == `` {
entry.Message = fmt.Sprint(message...)
} else {
entry.Message = fmt.Sprintf(format, message...)
} }
if MinStackLevel <= level { if MinStackLevel <= level {

View File

@ -55,6 +55,16 @@ func TestLogLevel(t *testing.T) {
MinLevel, Output = LevelInfo, nil MinLevel, Output = LevelInfo, nil
} }
func TestLogf(t *testing.T) {
b := bytes.Buffer{}
Output = &b
Infof(`Test%s-%d`, `tt`, 1)
assert.True(t, strings.Contains(b.String(), `Testtt-1`))
Output = nil
}
func TestStackTrace(t *testing.T) { func TestStackTrace(t *testing.T) {
b := bytes.Buffer{} b := bytes.Buffer{}
Output = &b Output = &b