docset-sfdc/SFDashC/logging.go

81 lines
1.8 KiB
Go

package main
import (
"fmt"
"log"
)
const (
prefix = "SFDashC"
// Log Levels
ERROR = iota
WARNING = iota
INFO = iota
DEBUG = iota
)
var logLevel int
func init() {
logLevel = INFO
}
func getLevelText() string {
switch logLevel {
case ERROR:
return "ERROR"
case WARNING:
return "WARNING"
case INFO:
return "INFO"
case DEBUG:
return "DEBUG"
default:
return "UNKNOWN"
}
}
func getLogPrefix() string {
return fmt.Sprintf("%s: %s:", prefix, getLevelText())
}
// SetLogLevel will set the maximum level to print
func SetLogLevel(level int) {
logLevel = level
}
// Log will print a formatted message with a prefix for a specified level
// If the level is greater than the maximum log level, it will not print
func Log(level int, format string, a ...interface{}) {
if level <= logLevel {
message := fmt.Sprintf(format, a...)
message = fmt.Sprintf("%s: %s: %s", prefix, getLevelText(), message)
log.Println(message)
}
}
// LogError will print an error message
// If the level is greater than the maximum log level, it will not print
// It is recommended to use log.Fatal() instead since it will handle exits for you
func LogError(format string, a ...interface{}) {
Log(ERROR, format, a...)
}
// LogInfo will print a warning message
// If the level is greater than the maximum log level, it will not print
func LogWarning(format string, a ...interface{}) {
Log(WARNING, format, a...)
}
// LogInfo will print an info message
// If the level is greater than the maximum log level, it will not print
func LogInfo(format string, a ...interface{}) {
Log(INFO, format, a...)
}
// LogDebug will print an debug message
// If the level is greater than the maximum log level, it will not print
func LogDebug(format string, a ...interface{}) {
Log(DEBUG, format, a...)
}