aboutsummaryrefslogtreecommitdiffhomepage
path: root/logger
diff options
context:
space:
mode:
authorGravatar Rogier Lommers <rogier@lommers.org>2018-01-30 05:34:00 +0100
committerGravatar fguillot <fred@kanboard.net>2018-01-29 20:34:00 -0800
commit24a2f472ec8593b4734e91ac15ee5503d16ae63a (patch)
treeeea369c191da9b2807b3e8db714ca84f20761d20 /logger
parent40eb1b10fe40bd23e40708f734b74b992547d8ca (diff)
Add flag to enable debug logging
Diffstat (limited to 'logger')
-rw-r--r--logger/logger.go63
1 files changed, 56 insertions, 7 deletions
diff --git a/logger/logger.go b/logger/logger.go
index e608503..01d041c 100644
--- a/logger/logger.go
+++ b/logger/logger.go
@@ -10,28 +10,77 @@ import (
"time"
)
+var requestedLevel = InfoLevel
+
+// LogLevel type
+type LogLevel uint32
+
+const (
+ // FatalLevel should be used in fatal situations, the app will exit
+ FatalLevel LogLevel = iota
+
+ // ErrorLevel should be used when someone should really look at the error
+ ErrorLevel
+
+ // InfoLevel should be used during normal operations
+ InfoLevel
+
+ // DebugLevel should be used only during development
+ DebugLevel
+)
+
+// Convert the Level to a string.
+func (level LogLevel) String() string {
+ switch level {
+ case DebugLevel:
+ return "DEBUG"
+ case InfoLevel:
+ return "INFO"
+ case ErrorLevel:
+ return "ERROR"
+ case FatalLevel:
+ return "FATAL"
+ }
+
+ return "UNKNOWN"
+}
+
+// EnableDebug increases logging, more verbose (debug)
+func EnableDebug() {
+ requestedLevel = DebugLevel
+ formatMessage(InfoLevel, "Debug mode enabled")
+}
+
// Debug sends a debug log message.
func Debug(format string, v ...interface{}) {
- formatMessage("DEBUG", format, v...)
+ if requestedLevel >= DebugLevel {
+ formatMessage(DebugLevel, format, v...)
+ }
}
// Info sends an info log message.
func Info(format string, v ...interface{}) {
- formatMessage("INFO", format, v...)
+ if requestedLevel >= InfoLevel {
+ formatMessage(InfoLevel, format, v...)
+ }
}
// Error sends an error log message.
func Error(format string, v ...interface{}) {
- formatMessage("ERROR", format, v...)
+ if requestedLevel >= ErrorLevel {
+ formatMessage(ErrorLevel, format, v...)
+ }
}
// Fatal sends a fatal log message and stop the execution of the program.
func Fatal(format string, v ...interface{}) {
- formatMessage("FATAL", format, v...)
- os.Exit(1)
+ if requestedLevel >= FatalLevel {
+ formatMessage(FatalLevel, format, v...)
+ os.Exit(1)
+ }
}
-func formatMessage(level, format string, v ...interface{}) {
- prefix := fmt.Sprintf("[%s] [%s] ", time.Now().Format("2006-01-02T15:04:05"), level)
+func formatMessage(level LogLevel, format string, v ...interface{}) {
+ prefix := fmt.Sprintf("[%s] [%s] ", time.Now().Format("2006-01-02T15:04:05"), level.String())
fmt.Fprintf(os.Stderr, prefix+format+"\n", v...)
}