func (l *Logger) Panicf(format string, v ...interface{}) {
	l.Errorf(format, v...)
	panic(fmt.Errorf(format, v...))
}
Panicf is same as Errorf followed by panic()
package logger
import (
	"fmt"
	"io"
	"os"
	"github.com/shiena/ansicolor"
)
const (
	Red    = "\x1b[31m"
	Green  = "\x1b[32m"
	Yellow = "\x1b[33m"
	Blue   = "\x1b[34m"
	Reset  = "\x1b[0m"
	Bold   = "\x1b[1m"
)
type Logger struct {
	writer io.Writer
	prefix string
}
func NewLogger(w io.Writer) *Logger {
	return &Logger{
		writer: w,
		prefix: "bro > ",
	}
}
func (l *Logger) Write(str string) error {
	w := ansicolor.NewAnsiColorWriter(l.writer)
	_, err := fmt.Fprintf(w, str)
	return err
}
func (l *Logger) Printf(format string, v ...interface{}) {
	l.Write(fmt.Sprintf(format, v...))
}
func (l *Logger) Print(v ...interface{}) {
	l.Write(fmt.Sprint(v...))
}
func (l *Logger) Println(v ...interface{}) {
	l.Write(fmt.Sprintln(v...))
}
func (l *Logger) Logf(format string, v ...interface{}) {
	l.Write(l.prefix + fmt.Sprintf(format, v...) + Reset + "\n")
}
func (l *Logger) Log(v ...interface{}) {
	l.Write(l.prefix + fmt.Sprint(v...) + Reset + "\n")
}
func (l *Logger) Debugf(format string, v ...interface{}) {
	l.Write(Green + l.prefix + fmt.Sprintf(format, v...) + Reset + "\n")
}
func (l *Logger) Debug(v ...interface{}) {
	l.Write(Green + l.prefix + fmt.Sprint(v...) + Reset + "\n")
}
func (l *Logger) Infof(format string, v ...interface{}) {
	l.Write(Blue + l.prefix + fmt.Sprintf(format, v...) + Reset + "\n")
}
func (l *Logger) Info(v ...interface{}) {
	l.Write(Blue + l.prefix + fmt.Sprint(v...) + Reset + "\n")
}
func (l *Logger) Warnf(format string, v ...interface{}) {
	l.Write(Yellow + l.prefix + fmt.Sprintf(format, v...) + Reset + "\n")
}
func (l *Logger) Warn(v ...interface{}) {
	l.Write(Yellow + l.prefix + fmt.Sprint(v...) + Reset + "\n")
}
func (l *Logger) Errorf(format string, v ...interface{}) {
	l.Write(Red + l.prefix + fmt.Sprintf(format, v...) + Reset + "\n")
}
func (l *Logger) Error(v ...interface{}) {
	l.Write(Red + l.prefix + fmt.Sprint(v...) + Reset + "\n")
}
func (l *Logger) Fatalf(format string, v ...interface{}) {
	l.Errorf(format, v...)
	os.Exit(1)
}
func (l *Logger) Fatal(v ...interface{}) {
	l.Error(v...)
	os.Exit(1)
}