package global import ( "fmt" "path/filepath" "strings" log "github.com/sirupsen/logrus" ) type LogFile struct { log.TextFormatter } const ( red = "38;2;255;0;0" yellow = "38;2;255;165;0" gray = "38;2;100;100;100" def = "38;2;100;150;200" green = "38;2;85;107;47" // red = "31" // yellow = "33" // gray = "37" // def = "36" ) func (f *LogFile) Format(entry *log.Entry) ([]byte, error) { var levelColor string switch entry.Level { case log.DebugLevel, log.TraceLevel: levelColor = green case log.WarnLevel: levelColor = yellow case log.ErrorLevel, log.FatalLevel, log.PanicLevel: levelColor = red case log.InfoLevel: levelColor = def default: levelColor = def } funcs := strings.SplitN(entry.Caller.Function, ".", 2) msg := fmt.Sprintf("\033[%sm[%s] [%s] [%s:%d] %s\033[0m \n", levelColor, entry.Time.Format("2006-01-02 15:04:05,000"), strings.ToUpper(entry.Level.String()), funcs[0]+"/"+filepath.Base(entry.Caller.File), entry.Caller.Line, entry.Message) return []byte(msg), nil }