2023-03-01 10:42:46 +00:00
|
|
|
package utils
|
|
|
|
|
|
|
|
import (
|
2023-08-08 15:58:17 +00:00
|
|
|
"fmt"
|
2025-02-18 13:48:44 +00:00
|
|
|
"github.com/kairos-io/kairos-sdk/types"
|
2023-03-01 10:42:46 +00:00
|
|
|
"io"
|
|
|
|
"os"
|
2023-03-08 10:45:11 +00:00
|
|
|
"path/filepath"
|
2023-09-26 08:56:32 +00:00
|
|
|
"time"
|
2023-03-02 15:46:25 +00:00
|
|
|
|
2023-03-08 10:45:11 +00:00
|
|
|
"github.com/kairos-io/immucore/internal/constants"
|
2023-03-02 15:46:25 +00:00
|
|
|
"github.com/rs/zerolog"
|
2023-03-01 10:42:46 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
var Log zerolog.Logger
|
|
|
|
var logFile *os.File
|
|
|
|
|
2025-02-18 13:48:44 +00:00
|
|
|
// KLog is the generic KairosLogger that we pass to kcrypt calls
|
|
|
|
var KLog types.KairosLogger
|
|
|
|
|
2023-03-01 10:42:46 +00:00
|
|
|
func CloseLogFiles() {
|
|
|
|
logFile.Close()
|
|
|
|
}
|
|
|
|
|
|
|
|
func SetLogger() {
|
|
|
|
var loggers []io.Writer
|
2023-08-08 15:58:17 +00:00
|
|
|
var level zerolog.Level
|
2023-09-26 08:56:32 +00:00
|
|
|
|
2023-03-08 10:45:11 +00:00
|
|
|
_ = os.MkdirAll(constants.LogDir, os.ModeDir|os.ModePerm)
|
|
|
|
logFile, err := os.Create(filepath.Join(constants.LogDir, "immucore.log"))
|
2023-03-01 10:42:46 +00:00
|
|
|
if err == nil {
|
2024-02-08 13:22:44 +00:00
|
|
|
loggers = append(loggers, zerolog.ConsoleWriter{Out: logFile, TimeFormat: time.RFC3339, NoColor: true})
|
2023-03-01 10:42:46 +00:00
|
|
|
}
|
|
|
|
|
2023-09-26 08:56:32 +00:00
|
|
|
loggers = append(loggers, zerolog.NewConsoleWriter(func(w *zerolog.ConsoleWriter) {
|
|
|
|
w.TimeFormat = time.RFC3339
|
|
|
|
}))
|
2023-03-01 14:43:09 +00:00
|
|
|
|
2023-03-01 10:42:46 +00:00
|
|
|
multi := zerolog.MultiLevelWriter(loggers...)
|
2023-08-08 15:58:17 +00:00
|
|
|
level = zerolog.InfoLevel
|
|
|
|
// Set debug level
|
2023-03-01 10:42:46 +00:00
|
|
|
debug := len(ReadCMDLineArg("rd.immucore.debug")) > 0
|
|
|
|
debugFromEnv := os.Getenv("IMMUCORE_DEBUG") != ""
|
|
|
|
if debug || debugFromEnv {
|
2023-08-08 15:58:17 +00:00
|
|
|
level = zerolog.DebugLevel
|
2023-03-01 10:42:46 +00:00
|
|
|
}
|
2023-09-26 08:56:32 +00:00
|
|
|
Log = zerolog.New(multi).With().Timestamp().Logger().Level(level)
|
2025-02-18 13:48:44 +00:00
|
|
|
KLog = types.NewNullLogger()
|
|
|
|
KLog.Logger = Log
|
2023-08-08 15:58:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// MiddleLog implements the bridge between zerolog and the logger.Interface that yip needs.
|
|
|
|
type MiddleLog struct {
|
|
|
|
zerolog.Logger
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m MiddleLog) Infof(tpl string, args ...interface{}) {
|
|
|
|
m.Logger.Info().Msg(fmt.Sprintf(tpl, args...))
|
|
|
|
}
|
|
|
|
func (m MiddleLog) Info(args ...interface{}) {
|
|
|
|
m.Logger.Info().Msg(fmt.Sprint(args...))
|
|
|
|
}
|
|
|
|
func (m MiddleLog) Warnf(tpl string, args ...interface{}) {
|
|
|
|
m.Logger.Warn().Msg(fmt.Sprintf(tpl, args...))
|
|
|
|
}
|
|
|
|
func (m MiddleLog) Warn(args ...interface{}) {
|
|
|
|
m.Logger.Warn().Msg(fmt.Sprint(args...))
|
|
|
|
}
|
|
|
|
func (m MiddleLog) Debugf(tpl string, args ...interface{}) {
|
|
|
|
m.Logger.Debug().Msg(fmt.Sprintf(tpl, args...))
|
|
|
|
}
|
|
|
|
func (m MiddleLog) Debug(args ...interface{}) {
|
|
|
|
m.Logger.Debug().Msg(fmt.Sprint(args...))
|
|
|
|
}
|
|
|
|
func (m MiddleLog) Errorf(tpl string, args ...interface{}) {
|
|
|
|
m.Logger.Error().Msg(fmt.Sprintf(tpl, args...))
|
|
|
|
}
|
|
|
|
func (m MiddleLog) Error(args ...interface{}) {
|
|
|
|
m.Logger.Error().Msg(fmt.Sprint(args...))
|
|
|
|
}
|
|
|
|
func (m MiddleLog) Fatalf(tpl string, args ...interface{}) {
|
|
|
|
m.Logger.Fatal().Msg(fmt.Sprintf(tpl, args...))
|
|
|
|
}
|
|
|
|
func (m MiddleLog) Fatal(args ...interface{}) {
|
|
|
|
m.Logger.Fatal().Msg(fmt.Sprint(args...))
|
|
|
|
}
|
|
|
|
func (m MiddleLog) Panicf(tpl string, args ...interface{}) {
|
|
|
|
m.Logger.Panic().Msg(fmt.Sprintf(tpl, args...))
|
|
|
|
}
|
|
|
|
func (m MiddleLog) Panic(args ...interface{}) {
|
|
|
|
m.Logger.Panic().Msg(fmt.Sprint(args...))
|
|
|
|
}
|
|
|
|
func (m MiddleLog) Tracef(tpl string, args ...interface{}) {
|
|
|
|
m.Logger.Trace().Msg(fmt.Sprintf(tpl, args...))
|
|
|
|
}
|
|
|
|
func (m MiddleLog) Trace(args ...interface{}) {
|
|
|
|
m.Logger.Trace().Msg(fmt.Sprint(args...))
|
2023-03-01 10:42:46 +00:00
|
|
|
}
|