mirror of
https://github.com/RussellChamp/advent-of-code-2021.git
synced 2026-10-27 21:52:32 +00:00
76 lines
1.3 KiB
Go
76 lines
1.3 KiB
Go
package log
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
)
|
|
|
|
const (
|
|
NONE = 0
|
|
NORMAL = 1
|
|
DEBUG = 2
|
|
DIAGNOSTIC = 3
|
|
NEVER = 99
|
|
)
|
|
|
|
const (
|
|
CONSOLE = 1
|
|
FILE = 2
|
|
)
|
|
|
|
var LOG_LEVEL = NORMAL
|
|
var LOG_TIMESTAMP = false
|
|
var LOG_OUTPUT = CONSOLE
|
|
|
|
func SetLogLevel(level int) {
|
|
if level >= NONE && level <= DIAGNOSTIC {
|
|
LOG_LEVEL = level
|
|
}
|
|
}
|
|
|
|
func SetLogLevelFromArgs(argMap map[string]string) {
|
|
logLevelStr, found := argMap["log"]
|
|
if found && logLevelStr != "" {
|
|
logLevel, err := NORMAL, error(nil)
|
|
|
|
switch logLevelStr {
|
|
case "NONE", "None", "none":
|
|
logLevel = NONE
|
|
case "NORMAL", "Normal", "normal":
|
|
logLevel = NORMAL
|
|
case "DEBUG", "Debug", "debug":
|
|
logLevel = DEBUG
|
|
case "DIAG", "DIAGNOSTIC", "Diag", "Diagnostic", "diag", "diagnostic":
|
|
logLevel = DIAGNOSTIC
|
|
default:
|
|
logLevel, err = strconv.Atoi(logLevelStr)
|
|
}
|
|
|
|
if err != nil {
|
|
panic("Error when parsing log level")
|
|
}
|
|
SetLogLevel(logLevel)
|
|
}
|
|
}
|
|
|
|
func Print(minLevel int, a ...interface{}) (int, error) {
|
|
if LOG_LEVEL >= minLevel {
|
|
return fmt.Print(a...)
|
|
}
|
|
return 0, nil
|
|
}
|
|
|
|
func Println(minLevel int, a ...interface{}) (int, error) {
|
|
if LOG_LEVEL >= minLevel {
|
|
return fmt.Println(a...)
|
|
}
|
|
return 0, nil
|
|
}
|
|
|
|
func Printf(minLevel int, format string, a ...interface{}) (int, error) {
|
|
if LOG_LEVEL >= minLevel {
|
|
return fmt.Printf(format, a...)
|
|
}
|
|
return 0, nil
|
|
}
|