with fields

pull/1/head v0.2.2
Basit Ali 2022-04-11 16:31:12 +05:00
parent 4897677857
commit c516a2cca0
3 changed files with 29 additions and 3 deletions

6
fields.go 100644
View File

@ -0,0 +1,6 @@
package log
func (l myLogger) WithFields(fields Fields) Logger {
l.data = fields
return l
}

View File

@ -29,4 +29,6 @@ type Logger interface {
End(a ...interface{}) End(a ...interface{})
Level(uint8) Logger Level(uint8) Logger
WithFields(fields Fields) Logger
} }

View File

@ -13,22 +13,41 @@ var (
DefaultTimeFormat = time.RFC3339 DefaultTimeFormat = time.RFC3339
) )
type Fields map[string]interface{}
type myLogger struct { type myLogger struct {
Writer io.Writer Writer io.Writer
prefix string prefix string
begin time.Time begin time.Time
level uint8 level uint8
data Fields
} }
func logPrefix(level uint8) string { func logPrefix(level uint8) string {
return fmt.Sprintf("time=%q level=%s function=%s", time.Now().Format(DefaultTimeFormat), unmarshalLevel(level), funcName()) return fmt.Sprintf("time=%q level=%s function=%s", time.Now().Format(DefaultTimeFormat), unmarshalLevel(level), funcName())
} }
func (fields Fields) String() string {
if len(fields) == 0 {
return ""
}
var buffer strings.Builder
for k, v := range fields {
switch v := v.(type) {
case string:
buffer.WriteString(fmt.Sprintf(" %s=%q", k, v))
default:
buffer.WriteString(fmt.Sprintf(" %s=%v", k, v))
}
}
return buffer.String()
}
func (l myLogger) log(level uint8, s ...interface{}) { func (l myLogger) log(level uint8, s ...interface{}) {
if l.Writer == nil { if l.Writer == nil {
return return
} }
f := fmt.Sprintf("%s%s msg=%q", logPrefix(level), l.prefix, fmt.Sprint(s...)) f := fmt.Sprintf("%s%s msg=%q %s", logPrefix(level), l.prefix, fmt.Sprint(s...), l.data)
fmt.Fprintln(l.Writer, f) fmt.Fprintln(l.Writer, f)
} }
@ -36,9 +55,8 @@ func (l myLogger) logf(level uint8, format string, s ...interface{}) {
if l.Writer == nil { if l.Writer == nil {
return return
} }
format = fmt.Sprintf("%%s %%s msg=\"%s\"\n", format) format = fmt.Sprintf("%%s %%s msg=\"%s\" %s\n", format, l.data)
s = append([]interface{}{logPrefix(level), l.prefix}, s...) s = append([]interface{}{logPrefix(level), l.prefix}, s...)
fmt.Fprintf(l.Writer, format, s...) fmt.Fprintf(l.Writer, format, s...)
} }