package logging import ( "fmt" ) const ( // For colouring resetSeq = "\033[0m" colourSeq = "\033[0;%dm" ) // Colour map var colour = map[level]string{ INFO: fmt.Sprintf(colourSeq, 94), // blue WARNING: fmt.Sprintf(colourSeq, 95), // pink ERROR: fmt.Sprintf(colourSeq, 91), // red FATAL: fmt.Sprintf(colourSeq, 91), // red } // ColouredFormatter colours log messages with ASCI escape codes // and adds filename and line number before the log message // See https://en.wikipedia.org/wiki/ANSI_escape_code type ColouredFormatter struct { } // GetPrefix returns colour escape code func (f *ColouredFormatter) GetPrefix(lvl level) string { return colour[lvl] } // GetSuffix returns reset sequence code func (f *ColouredFormatter) GetSuffix(lvl level) string { return resetSeq } // Format adds filename and line number before the log message func (f *ColouredFormatter) Format(lvl level, v ...interface{}) []interface{} { return append([]interface{}{header()}, v...) }