Initial elektromLogging library
This commit is contained in:
parent
e3caa90c31
commit
1fd6c7e4f4
12 changed files with 571 additions and 0 deletions
53
elektronLogging/ElektronFormatter.go
Normal file
53
elektronLogging/ElektronFormatter.go
Normal file
|
@ -0,0 +1,53 @@
|
|||
package elektronLogging
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"strings"
|
||||
"github.com/fatih/color"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type ElektronFormatter struct {
|
||||
TimestampFormat string
|
||||
}
|
||||
|
||||
func (f ElektronFormatter) getColor(entry *log.Entry) *color.Color {
|
||||
switch entry.Level {
|
||||
case log.InfoLevel:
|
||||
return color.New(color.FgGreen, color.Bold)
|
||||
case log.WarnLevel:
|
||||
return color.New(color.FgYellow, color.Bold)
|
||||
case log.ErrorLevel:
|
||||
return color.New(color.FgRed, color.Bold)
|
||||
case log.FatalLevel:
|
||||
return color.New(color.FgRed, color.Bold)
|
||||
default:
|
||||
return color.New(color.FgWhite, color.Bold)
|
||||
}
|
||||
}
|
||||
func (f ElektronFormatter) Format(entry *log.Entry) ([]byte, error) {
|
||||
var b *bytes.Buffer
|
||||
|
||||
if entry.Buffer != nil {
|
||||
b = entry.Buffer
|
||||
} else {
|
||||
b = &bytes.Buffer{}
|
||||
}
|
||||
|
||||
levelColor := f.getColor(entry)
|
||||
level := levelColor.Sprintf("[%s]:",strings.ToUpper(entry.Level.String()))
|
||||
message := fmt.Sprintf("%s %s %s ",level,entry.Time.Format(f.TimestampFormat), entry.Message)
|
||||
|
||||
var formattedFields []string
|
||||
for key, value := range entry.Data {
|
||||
formattedFields = append(formattedFields,
|
||||
strings.Join([]string{key, fmt.Sprintf("%s", value)}, "="))
|
||||
}
|
||||
|
||||
|
||||
b.WriteString(message)
|
||||
b.WriteString(strings.Join(formattedFields, ", "))
|
||||
b.WriteByte('\n')
|
||||
return b.Bytes(), nil
|
||||
}
|
Reference in a new issue