Files
warewulf/internal/pkg/wwlog/wwlog.go
Christian Goll 0ef96c575d Added SEC prefix for wwlog levels
This SEC-levels are meant for internal documentation of security
relevant messages so that this code sections are marked.
2022-04-07 11:05:00 +02:00

89 lines
1.5 KiB
Go

package wwlog
import (
"fmt"
"os"
)
const (
CRITICAL = 0
SECCRITICAL = 1
ERROR = 2
SECERROR = 3
WARN = 4
SECWARN = 5
INFO = 6
SECINFO = 7
VERBOSE = 8
SECVERBOSE = 9
DEBUG = 10
SECDEBUG = 11
)
var (
logLevel = INFO
)
/*
Set the central log level. Uneven values are security related
lof entries.
*/
func SetLevel(level int) {
logLevel = level
Printf(DEBUG, "Set log level to: %d\n", logLevel)
}
/*
generate the prefix for log level
*/
func prefixGen(level int) string {
switch level {
case DEBUG:
return "[DEBUG] : "
case SECDEBUG:
return "[SECDEBUG] : "
case VERBOSE:
return "[VERBOSE] : "
case SECVERBOSE:
return "[SECVERBOSE] : "
case INFO:
return "[INFO] : "
case SECINFO:
return "[SECINFO] : "
case WARN:
return "[WARNING] : "
case SECWARN:
return "[SECWARNING] : "
case ERROR:
return "[ERROR] : "
case SECERROR:
return "[SECERROR] : "
case CRITICAL:
return "[CRITICAL] : "
case SECCRITICAL:
return "[SECCRITICAL]: "
}
return "[UNDEF] : "
}
func printlog(level int, message string) {
if level == INFO && logLevel <= INFO {
fmt.Print(message)
} else if level <= logLevel {
if level < INFO {
fmt.Fprintf(os.Stderr, prefixGen(level)+message)
} else {
fmt.Printf(prefixGen(level) + message)
}
}
}
func Println(level int, message string) {
printlog(level, message)
}
func Printf(level int, message string, a ...interface{}) {
printlog(level, fmt.Sprintf(message, a...))
}