51 lines
1.0 KiB
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
|
|
} |