func (e Entry) Alertf(s string, v ...interface{}) {
	e.Message = fmt.Sprintf(s, v...)
	e.Level = AlertLevel
	HandleEntry(e)
}
Alertf logs an alert log entry with formatting
package log
import (
	"fmt"
	"time"
)
type Fields []Field
type Entry struct {
	Message   string    `json:"message"`
	Timestamp time.Time `json:"timestamp"`
	Fields    []Field   `json:"fields"`
	Level     Level     `json:"level"`
	start     time.Time
}
func newEntry(e Entry) Entry {
	flds := make([]Field, 0, len(e.Fields))
	e.Fields = append(flds, e.Fields...)
	return e
}
func newEntryWithFields(fields []Field) Entry {
	e := Entry{
		Fields: make([]Field, 0, len(fields)),
	}
	e.Fields = append(e.Fields, fields...)
	return e
}
func (e Entry) WithField(key string, value interface{}) Entry {
	ne := newEntry(e)
	ne.Fields = append(ne.Fields, Field{Key: key, Value: value})
	return ne
}
func (e Entry) WithFields(fields ...Field) Entry {
	ne := newEntry(e)
	ne.Fields = append(ne.Fields, fields...)
	return ne
}
func (e Entry) WithTrace() Entry {
	e.start = time.Now()
	return e
}
func (e Entry) WithError(err error) Entry {
	return withErrFn(e, err)
}
func (e Entry) Debug(v ...interface{}) {
	e.Message = fmt.Sprint(v...)
	e.Level = DebugLevel
	HandleEntry(e)
}
func (e Entry) Debugf(s string, v ...interface{}) {
	e.Message = fmt.Sprintf(s, v...)
	e.Level = DebugLevel
	HandleEntry(e)
}
func (e Entry) Info(v ...interface{}) {
	e.Message = fmt.Sprint(v...)
	e.Level = InfoLevel
	HandleEntry(e)
}
func (e Entry) Infof(s string, v ...interface{}) {
	e.Message = fmt.Sprintf(s, v...)
	e.Level = InfoLevel
	HandleEntry(e)
}
func (e Entry) Notice(v ...interface{}) {
	e.Message = fmt.Sprint(v...)
	e.Level = NoticeLevel
	HandleEntry(e)
}
func (e Entry) Noticef(s string, v ...interface{}) {
	e.Message = fmt.Sprintf(s, v...)
	e.Level = NoticeLevel
	HandleEntry(e)
}
func (e Entry) Warn(v ...interface{}) {
	e.Message = fmt.Sprint(v...)
	e.Level = WarnLevel
	HandleEntry(e)
}
func (e Entry) Warnf(s string, v ...interface{}) {
	e.Message = fmt.Sprintf(s, v...)
	e.Level = WarnLevel
	HandleEntry(e)
}
func (e Entry) Panic(v ...interface{}) {
	e.Message = fmt.Sprint(v...)
	e.Level = PanicLevel
	HandleEntry(e)
	exitFunc(1)
}
func (e Entry) Panicf(s string, v ...interface{}) {
	e.Message = fmt.Sprintf(s, v...)
	e.Level = PanicLevel
	HandleEntry(e)
	exitFunc(1)
}
func (e Entry) Alert(v ...interface{}) {
	e.Message = fmt.Sprint(v...)
	e.Level = AlertLevel
	HandleEntry(e)
}