Add Bytes() method to Entry, and use it to avoid double type cast

This commit is contained in:
tbunyk 2019-03-18 16:07:31 +02:00
parent 470f2e08fc
commit c88f8de1fe
2 changed files with 8 additions and 3 deletions

View File

@ -85,10 +85,15 @@ func NewEntry(logger *Logger) *Entry {
} }
} }
// Returns the bytes representation of this entry from the formatter.
func (entry *Entry) Bytes() ([]byte, error) {
return entry.Logger.Formatter.Format(entry)
}
// Returns the string representation from the reader and ultimately the // Returns the string representation from the reader and ultimately the
// formatter. // formatter.
func (entry *Entry) String() (string, error) { func (entry *Entry) String() (string, error) {
serialized, err := entry.Logger.Formatter.Format(entry) serialized, err := entry.Bytes()
if err != nil { if err != nil {
return "", err return "", err
} }

View File

@ -15,11 +15,11 @@ type Hook struct {
// Fire will be called when some logging function is called with current hook // Fire will be called when some logging function is called with current hook
// It will format log entry to string and write it to appropriate writer // It will format log entry to string and write it to appropriate writer
func (hook *Hook) Fire(entry *log.Entry) error { func (hook *Hook) Fire(entry *log.Entry) error {
line, err := entry.String() line, err := entry.Bytes()
if err != nil { if err != nil {
return err return err
} }
_, err = hook.Writer.Write([]byte(line)) _, err = hook.Writer.Write(line)
return err return err
} }