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{})
Level(uint8) Logger
WithFields(fields Fields) Logger
}

View File

@ -13,22 +13,41 @@ var (
DefaultTimeFormat = time.RFC3339
)
type Fields map[string]interface{}
type myLogger struct {
Writer io.Writer
prefix string
begin time.Time
level uint8
data Fields
}
func logPrefix(level uint8) string {
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{}) {
if l.Writer == nil {
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)
}
@ -36,9 +55,8 @@ func (l myLogger) logf(level uint8, format string, s ...interface{}) {
if l.Writer == nil {
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...)
fmt.Fprintf(l.Writer, format, s...)
}