go-scan/log/log.go
2022-06-24 15:31:48 +02:00

63 lines
1.3 KiB
Go

package log
import (
"fmt"
"velvettear/go-scan/util/date"
)
// exported functions
func Debug(logMessage string, logExtras ...string) {
trace(0, logMessage, logExtras...)
}
func Info(logMessage string, logExtras ...string) {
trace(1, logMessage, logExtras...)
}
func Warning(logMessage string, logExtras ...string) {
trace(2, logMessage, logExtras...)
}
func Error(logMessage string, logExtras ...string) {
trace(3, logMessage, logExtras...)
}
// unexported functions
func trace(logLevel int, logMessage string, logExtras ...string) {
if len(logMessage) == 0 {
return
}
extras := ""
for index := 0; index < len(logExtras); index++ {
tmp := logExtras[index]
if len(tmp) == 0 {
continue
}
if index > 0 {
extras += " | "
}
extras += logExtras[index]
}
if len(extras) > 0 {
logMessage = logMessage + " (" + extras + ")"
}
fmt.Println(buildLogMessage(getPrefixForLogLevel(logLevel), logMessage))
}
func getPrefixForLogLevel(loglevel int) string {
switch loglevel {
case 3:
return "error"
case 2:
return "warning"
case 1:
return "info"
default:
return "debug"
}
}
func buildLogMessage(prefix string, message string) string {
timestamp := date.New()
return timestamp.GetFormattedDate() + " [" + prefix + "]" + " > " + message
}