diff --git a/config/logger.go b/config/logger.go index cc00c77f..2972b21e 100644 --- a/config/logger.go +++ b/config/logger.go @@ -9,7 +9,7 @@ import ( "os" ) -const DefaultLoggerPrefix = "[IRIS] " +const DefaultLoggerPrefix = "" var ( // TimeFormat default time format for any kind of datetime parsing @@ -23,6 +23,7 @@ type ( // Default is os.Stdout Out *os.File // Prefix the prefix for each message + // Default is "" Prefix string // Disabled default is false Disabled bool @@ -39,10 +40,12 @@ type ( ColorFgWarning int // ColorFgDanger the foreground color for error messages ColorFgDanger int + // OtherFgColor the foreground color for the rest of the message types + ColorFgOther int // background colors single SGR Code - // ColorBgDefault the background color for the normal message bodies + // ColorBgDefault the background color for the normal messages ColorBgDefault int // ColorBgInfo the background color for info messages ColorBgInfo int @@ -52,8 +55,11 @@ type ( ColorBgWarning int // ColorBgDanger the background color for error messages ColorBgDanger int + // OtherFgColor the background color for the rest of the message types + ColorBgOther int // banners are the force printed/written messages, doesn't care about Disabled field + // ColorFgBanner the foreground color for the banner ColorFgBanner int } @@ -63,21 +69,23 @@ type ( func DefaultLogger() Logger { return Logger{ Out: os.Stdout, - Prefix: DefaultLoggerPrefix, + Prefix: "", Disabled: false, // foreground colors ColorFgDefault: int(color.FgHiWhite), - ColorFgInfo: int(color.FgCyan), + ColorFgInfo: int(color.FgHiCyan), ColorFgSuccess: int(color.FgHiGreen), ColorFgWarning: int(color.FgHiMagenta), ColorFgDanger: int(color.FgHiRed), + ColorFgOther: int(color.FgHiYellow), // background colors ColorBgDefault: int(color.BgHiBlack), ColorBgInfo: int(color.BgHiBlack), ColorBgSuccess: int(color.BgHiBlack), ColorBgWarning: int(color.BgHiBlack), ColorBgDanger: int(color.BgHiWhite), - // banner colors + ColorBgOther: int(color.BgHiBlack), + // banner color ColorFgBanner: int(color.FgHiBlue), } } diff --git a/logger/logger.go b/logger/logger.go index b189d9d1..931a0661 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -34,6 +34,22 @@ func New(c config.Logger) *Logger { return l } +// SetEnable true enables, false disables the Logger +func (l *Logger) SetEnable(enable bool) { + l.config.Disabled = !enable +} + +// IsEnabled returns true if Logger is enabled, otherwise false +func (l *Logger) IsEnabled() bool { + return !l.config.Disabled +} + +// ResetColors sets the colors to the default +// this func is called every time a success, info, warning, or danger message is printed +func (l *Logger) ResetColors() { + l.underline.Add(attr(l.config.ColorBgDefault), attr(l.config.ColorFgBanner), color.Bold) +} + // PrintBanner prints a text (banner) with BannerFgColor, BannerBgColor and a success message at the end // It doesn't cares if the logger is disabled or not, it will print this func (l *Logger) PrintBanner(banner string, sucessMessage string) { @@ -55,98 +71,51 @@ func (l *Logger) PrintBanner(banner string, sucessMessage string) { c = nil } -// ResetColors sets the colors to the default -// this func is called every time a success, info, warning, or danger message is printed -func (l *Logger) ResetColors() { - l.underline.Add(attr(l.config.ColorBgDefault), attr(l.config.ColorFgBanner), color.Bold) -} - -// SetEnable true enables, false disables the Logger -func (l *Logger) SetEnable(enable bool) { - l.config.Disabled = !enable -} - -// IsEnabled returns true if Logger is enabled, otherwise false -func (l *Logger) IsEnabled() bool { - return !l.config.Disabled -} - -// Print calls l.Output to print to the logger. -// Arguments are handled in the manner of fmt.Print. -func (l *Logger) Print(v ...interface{}) { - if !l.config.Disabled { - l.underline.Print(v...) - } -} - // Printf calls l.Output to print to the logger. // Arguments are handled in the manner of fmt.Printf. func (l *Logger) Printf(format string, a ...interface{}) { if !l.config.Disabled { - l.underline.Printf(format, a...) + l.underline.Printf(l.config.Prefix+format, a...) + } +} + +// Print calls l.Output to print to the logger. +// Arguments are handled in the manner of fmt.Print. +func (l *Logger) Print(a interface{}) { + if !l.config.Disabled { + l.Printf("%#v", a) } } // Println calls l.Output to print to the logger. // Arguments are handled in the manner of fmt.Println. -func (l *Logger) Println(a ...interface{}) { +func (l *Logger) Println(a interface{}) { if !l.config.Disabled { - l.underline.Println(a...) + l.Printf("%#v\n", a) } } -// Fatal is equivalent to l.Print() followed by a call to os.Exit(1). -func (l *Logger) Fatal(a ...interface{}) { - if !l.config.Disabled { - l.underline.Print(a...) - - } - os.Exit(1) - +// Fatal is equivalent to l.Dangerf("%#v",interface{}) followed by a call to panic(). +func (l *Logger) Fatal(a interface{}) { + l.Warningf("%#v", a) + panic("") } -// Fatalf is equivalent to l.Printf() followed by a call to os.Exit(1). +// Fatalf is equivalent to l.Warningf() followed by a call to os.Exit(1). func (l *Logger) Fatalf(format string, a ...interface{}) { - if !l.config.Disabled { - l.underline.Printf(format, a...) - } - + l.Warningf(format, a...) os.Exit(1) - } -// Fatalln is equivalent to l.Println() followed by a call to os.Exit(1). -func (l *Logger) Fatalln(a ...interface{}) { - if !l.config.Disabled { - l.underline.Println(a...) - } - - os.Exit(1) - -} - -// Panic is equivalent to l.Print() followed by a call to panic(). -func (l *Logger) Panic(a ...interface{}) { - if !l.config.Disabled { - l.underline.Print(a...) - } - +// Panic is equivalent to l.Dangerf("%#v",interface{}) followed by a call to panic(). +func (l *Logger) Panic(a interface{}) { + l.Dangerf("%#v", a) panic("") } -// Panicf is equivalent to l.Printf() followed by a call to panic(). +// Panicf is equivalent to l.Dangerf() followed by a call to panic(). func (l *Logger) Panicf(format string, a ...interface{}) { - if !l.config.Disabled { - l.underline.Printf(format, a...) - } - panic("") -} - -// Panicln is equivalent to l.Println() followed by a call to panic(). -func (l *Logger) Panicln(a ...interface{}) { - if !l.config.Disabled { - l.underline.Println(a...) - } + l.Dangerf(format, a...) panic("") } @@ -155,7 +124,7 @@ func (l *Logger) Panicln(a ...interface{}) { func (l *Logger) Sucessf(format string, a ...interface{}) { if !l.config.Disabled { l.underline.Add(attr(l.config.ColorBgSuccess), attr(l.config.ColorFgSuccess)) - l.underline.Printf(format, a...) + l.Printf(format, a...) l.ResetColors() } } @@ -165,7 +134,7 @@ func (l *Logger) Sucessf(format string, a ...interface{}) { func (l *Logger) Infof(format string, a ...interface{}) { if !l.config.Disabled { l.underline.Add(attr(l.config.ColorBgInfo), attr(l.config.ColorFgInfo)) - l.underline.Printf(format, a...) + l.Printf(format, a...) l.ResetColors() } } @@ -175,7 +144,7 @@ func (l *Logger) Infof(format string, a ...interface{}) { func (l *Logger) Warningf(format string, a ...interface{}) { if !l.config.Disabled { l.underline.Add(attr(l.config.ColorBgWarning), attr(l.config.ColorFgWarning)) - l.underline.Printf(format, a...) + l.Printf(format, a...) l.ResetColors() } } @@ -185,7 +154,17 @@ func (l *Logger) Warningf(format string, a ...interface{}) { func (l *Logger) Dangerf(format string, a ...interface{}) { if !l.config.Disabled { l.underline.Add(attr(l.config.ColorBgDanger), attr(l.config.ColorFgDanger)) - l.underline.Printf(format, a...) + l.Printf(format, a...) + l.ResetColors() + } +} + +// Otherf calls l.Output to print to the logger with the Other colors. +// Arguments are handled in the manner of fmt.Printf. +func (l *Logger) Otherf(format string, a ...interface{}) { + if !l.config.Disabled { + l.underline.Add(attr(l.config.ColorBgOther), attr(l.config.ColorFgOther)) + l.Printf(format, a...) l.ResetColors() } } diff --git a/middleware/logger/logger.go b/middleware/logger/logger.go index f772dc4f..7a3daf4d 100644 --- a/middleware/logger/logger.go +++ b/middleware/logger/logger.go @@ -75,9 +75,9 @@ func (l *loggerMiddleware) Serve(ctx *iris.Context) { //finally print the logs if l.options.Latency { - l.Infof("%s %v %4v %s %s %s \n", date, status, latency, ip, method, path) + l.Otherf("%s %v %4v %s %s %s \n", date, status, latency, ip, method, path) } else { - l.Infof("%s %v %s %s %s \n", date, status, ip, method, path) + l.Otherf("%s %v %s %s %s \n", date, status, ip, method, path) } }