logfrog-go/formatters/json.go

51 lines
1.0 KiB
Go

package formatters
import (
"encoding/json"
"codeark.it/Bithero-Agency-Go/logfrog-go"
)
type JsonFormatter struct {
*logfrog.BaseLogFormatter
Pretty bool
Prefix string
Indent string
AppendNewline bool
}
func NewJsonFormatter(appendNewline bool) *JsonFormatter {
b := logfrog.NewBaseLogFormatter()
j := &JsonFormatter{ b, false, "", "", appendNewline }
b.LogFormatter = j
return j
}
func NewPrettyJsonFormatter(prefix string, indent string, appendNewline bool) *JsonFormatter {
b := logfrog.NewBaseLogFormatter()
j := &JsonFormatter{ b, true, prefix, indent, appendNewline }
b.LogFormatter = j
return j
}
func (j *JsonFormatter) Format(r *logfrog.LogRecord) ([]byte, error) {
var buf []byte
var err error
if j.Pretty {
buf, err = json.MarshalIndent(r, j.Prefix, j.Indent)
} else {
buf, err = json.Marshal(r)
}
if err != nil {
return nil, err
}
if j.AppendNewline {
buf = append(buf, '\n')
}
return buf, nil
}