Compare commits
No commits in common. "d13d85181911948a3e777b65fb0ad92a52fd592d" and "6d89afc6e3e20ad0018dd6e85fe58537eb7facd7" have entirely different histories.
d13d851819
...
6d89afc6e3
|
@ -15,4 +15,3 @@
|
||||||
# Dependency directories (remove the comment below to include it)
|
# Dependency directories (remove the comment below to include it)
|
||||||
# vendor/
|
# vendor/
|
||||||
|
|
||||||
log/
|
|
34
format.go
34
format.go
|
@ -2,21 +2,13 @@ package gologger
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const logTemplate = "[%s] %s : %s - %s\n"
|
const logTemplate = "[%s] %s : %s - %s\n"
|
||||||
|
|
||||||
func format(logEvent LogEvent) string {
|
func format(logEvent LogEvent) string {
|
||||||
data := logEvent.Ts.Format("2006-01-02 15:04:05")
|
data := logEvent.Ts.Format("2006-01-02 15:04:05")
|
||||||
msg := ""
|
msg := fmt.Sprint(logEvent.Data...)
|
||||||
firstMsg := logEvent.Data[0]
|
|
||||||
if isFormatString(firstMsg) {
|
|
||||||
msg = fmt.Sprintf(firstMsg.(string), logEvent.Data[1:]...)
|
|
||||||
} else {
|
|
||||||
msg = sprint(logEvent.Data)
|
|
||||||
}
|
|
||||||
|
|
||||||
ret := fmt.Sprintf(logTemplate, data, logEvent.Category, getLogLevelStr(logEvent.Level), msg)
|
ret := fmt.Sprintf(logTemplate, data, logEvent.Category, getLogLevelStr(logEvent.Level), msg)
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
@ -24,30 +16,8 @@ func format(logEvent LogEvent) string {
|
||||||
func getLogLevelStr(level int) string {
|
func getLogLevelStr(level int) string {
|
||||||
for name, slevel := range logLevelMap {
|
for name, slevel := range logLevelMap {
|
||||||
if slevel == level {
|
if slevel == level {
|
||||||
return strings.ToUpper(name)
|
return name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return "Unknown"
|
return "Unknown"
|
||||||
}
|
}
|
||||||
|
|
||||||
func isFormatString(f interface{}) bool {
|
|
||||||
s, ok := f.(string)
|
|
||||||
if !ok {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
// 尝试使用空接口来格式化字符串
|
|
||||||
m := fmt.Sprintf(s, []interface{}{})
|
|
||||||
return strings.Index(m, "MISSING") != -1
|
|
||||||
}
|
|
||||||
|
|
||||||
func sprint(s []interface{}) string {
|
|
||||||
str := make([]any, len(s))
|
|
||||||
for i, v := range s {
|
|
||||||
if i > 0 {
|
|
||||||
str[i] = fmt.Sprintf(" %v", v)
|
|
||||||
} else {
|
|
||||||
str[i] = fmt.Sprintf("%v", v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return fmt.Sprint(str...)
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
package gologger
|
|
||||||
|
|
||||||
import (
|
|
||||||
"strings"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestFormat(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
name string
|
|
||||||
logEvent LogEvent
|
|
||||||
want string
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
name: "Info level with format string",
|
|
||||||
logEvent: LogEvent{
|
|
||||||
Ts: time.Now(),
|
|
||||||
Category: "test_category",
|
|
||||||
Level: Info,
|
|
||||||
Data: []interface{}{"%s: %v", "key", "value"},
|
|
||||||
},
|
|
||||||
want: "test_category : INFO - key: value",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Error level without format string",
|
|
||||||
logEvent: LogEvent{
|
|
||||||
Ts: time.Now(),
|
|
||||||
Category: "test_category",
|
|
||||||
Level: Error,
|
|
||||||
Data: []interface{}{"error occurred", "additional info"},
|
|
||||||
},
|
|
||||||
want: "test_category : ERROR - error occurred additional info",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, tt := range tests {
|
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
|
||||||
if got := format(tt.logEvent); strings.Index(got, tt.want) == -1 {
|
|
||||||
t.Errorf("format() = %v, want %v", got, tt.want)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -4,7 +4,7 @@ import (
|
||||||
logger "git.pyer.club/kingecg/gologger"
|
logger "git.pyer.club/kingecg/gologger"
|
||||||
)
|
)
|
||||||
|
|
||||||
func aqmain() {
|
func main() {
|
||||||
logger.Configure(logger.LoggersConfig{
|
logger.Configure(logger.LoggersConfig{
|
||||||
Categories: map[string]logger.LogConfig{
|
Categories: map[string]logger.LogConfig{
|
||||||
"default": {
|
"default": {
|
||||||
|
@ -40,4 +40,5 @@ func aqmain() {
|
||||||
defaultLogger.Debug("debug again")
|
defaultLogger.Debug("debug again")
|
||||||
fatLogger.Debug("debug again")
|
fatLogger.Debug("debug again")
|
||||||
fatLogger.Error("This is error")
|
fatLogger.Error("This is error")
|
||||||
|
select {}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue