cc-metric-collector/internal/ccLogger/cclogger.go
2022-01-25 16:40:02 +01:00

112 lines
2.4 KiB
Go

package cclogger
import (
"fmt"
"runtime"
"os"
"log"
)
var (
globalDebug = false
stdout = os.Stdout
stderr = os.Stderr
debugLog *log.Logger = nil
infoLog *log.Logger = nil
errorLog *log.Logger = nil
warnLog *log.Logger = nil
defaultLog *log.Logger = nil
)
func initLogger() {
if debugLog == nil {
debugLog = log.New(stderr, "DEBUG", log.LstdFlags)
}
if infoLog == nil {
infoLog = log.New(stdout, "INFO", log.LstdFlags)
}
if errorLog == nil {
errorLog = log.New(stderr, "ERROR", log.LstdFlags)
}
if warnLog == nil {
warnLog = log.New(stderr, "WARN", log.LstdFlags)
}
if defaultLog == nil {
defaultLog = log.New(stdout, "", log.LstdFlags)
}
}
func CCPrint(logger *log.Logger, e ... interface {}) {
if logger != nil {
logger.Print(e)
}
}
func Print(e ... interface{}) {
CCPrint(defaultLog, e)
}
func ComponentPrint(component string, e ... interface{}) {
CCPrint(defaultLog, fmt.Sprintf("[%s]", component), e)
}
func Info(e ... interface{}) {
CCPrint(infoLog, e)
}
func ComponentInfo(component string, e ... interface{}) {
CCPrint(infoLog, fmt.Sprintf("[%s]", component), e)
}
func Debug(e ... interface{}) {
if globalDebug {
CCPrint(debugLog, e)
}
}
func ComponentDebug(component string, e ... interface{}) {
if globalDebug {
CCPrint(debugLog, fmt.Sprintf("[%s]", component), e)
}
}
func Error(e ... interface{}) {
_, fn, line, _ := runtime.Caller(1)
CCPrint(errorLog, fn, line, e)
}
func ComponentError(component string, e ... interface{}) {
_, fn, line, _ := runtime.Caller(1)
CCPrint(errorLog, fmt.Sprintf("[%s]", component), fn, line, e)
}
func SetDebug() {
globalDebug = true
}
func SetOutput(filename string) {
if filename == "stderr" {
if stderr != os.Stderr && stderr != os.Stdout {
stderr.Close()
}
stderr = os.Stderr
} else if filename == "stdout" {
if stderr != os.Stderr && stderr != os.Stdout {
stderr.Close()
}
stderr = os.Stdout
} else {
file, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0600)
if err == nil {
defer file.Close()
stderr = file
}
}
debugLog = nil
errorLog = nil
warnLog = nil
initLogger()
}