11package formatter
22
33import (
4- "strings"
5-
64 "github.com/gol4ng/logger"
5+ "github.com/valyala/bytebufferpool"
76)
87
98var falseCondition = func (entry logger.Entry ) bool {
@@ -18,60 +17,54 @@ type DefaultFormatter struct {
1817
1918// Format will return Entry as string
2019func (n * DefaultFormatter ) Format (entry logger.Entry ) string {
21- n . init ()
22- builder := & strings. Builder {}
20+ byteBuffer := bytebufferpool . Get ()
21+ defer bytebufferpool . Put ( byteBuffer )
2322
2423 colored := n .colored (entry )
2524 if colored {
2625 switch entry .Level {
2726 case logger .DebugLevel :
28- builder .WriteString ("\x1b [1;36m" )
27+ byteBuffer .WriteString ("\x1b [1;36m" )
2928 case logger .InfoLevel :
30- builder .WriteString ("\x1b [1;32m" )
29+ byteBuffer .WriteString ("\x1b [1;32m" )
3130 case logger .NoticeLevel :
32- builder .WriteString ("\x1b [1;34m" )
31+ byteBuffer .WriteString ("\x1b [1;34m" )
3332 case logger .WarningLevel :
34- builder .WriteString ("\x1b [1;33m" )
33+ byteBuffer .WriteString ("\x1b [1;33m" )
3534 case logger .ErrorLevel :
36- builder .WriteString ("\x1b [1;31m" )
35+ byteBuffer .WriteString ("\x1b [1;31m" )
3736 case logger .CriticalLevel :
38- builder .WriteString ("\x1b [1;30;47m" )
37+ byteBuffer .WriteString ("\x1b [1;30;47m" )
3938 case logger .AlertLevel :
40- builder .WriteString ("\x1b [1;30;43m" )
39+ byteBuffer .WriteString ("\x1b [1;30;43m" )
4140 case logger .EmergencyLevel :
42- builder .WriteString ("\x1b [1;37;41m" )
41+ byteBuffer .WriteString ("\x1b [1;37;41m" )
4342 }
4443 }
4544
46- builder .WriteString ("<" )
47- builder .WriteString (entry .Level .String ())
48- builder .WriteString (">" )
45+ byteBuffer .WriteString (`<` )
46+ byteBuffer .WriteString (entry .Level .String ())
47+ byteBuffer .WriteString (`>` )
4948 if colored {
50- builder .WriteString ("\x1b [m" )
49+ byteBuffer .WriteString ("\x1b [m" )
5150 }
5251 if entry .Message != "" {
53- builder .WriteString (" " )
54- builder .WriteString (entry .Message )
52+ byteBuffer .WriteString (` ` )
53+ byteBuffer .WriteString (entry .Message )
5554 }
5655 if entry .Context != nil && n .displayContext (entry ) {
57- builder .WriteString (" " )
58- ContextToJSON (entry .Context , builder )
59- }
60- return builder .String ()
61- }
62-
63- func (n * DefaultFormatter ) init () {
64- if n .colored == nil {
65- n .colored = falseCondition
66- }
67- if n .displayContext == nil {
68- n .displayContext = falseCondition
56+ byteBuffer .WriteString (` ` )
57+ ContextToJSON (entry .Context , byteBuffer )
6958 }
59+ return byteBuffer .String ()
7060}
7161
7262// NewDefaultFormatter will create a new DefaultFormatter
7363func NewDefaultFormatter (options ... Option ) * DefaultFormatter {
74- f := & DefaultFormatter {}
64+ f := & DefaultFormatter {
65+ colored : falseCondition ,
66+ displayContext : falseCondition ,
67+ }
7568 for _ , option := range options {
7669 option (f )
7770 }
0 commit comments