HellPot/config/logger.go

56 lines
1.5 KiB
Go
Raw Normal View History

package config
import (
"os"
2021-09-15 14:04:16 +00:00
"strings"
"time"
"github.com/rs/zerolog"
)
var (
2021-10-17 17:09:28 +00:00
// CurrentLogFile is used for accessing the location of the currently used log file across packages.
2021-09-15 14:04:16 +00:00
CurrentLogFile string
2021-09-15 21:25:02 +00:00
logFile *os.File
logDir string
logger zerolog.Logger
)
2021-09-15 13:43:01 +00:00
// StartLogger instantiates an instance of our zerolog loggger so we can hook it in our main package.
// While this does return a logger, it should not be used for additional retrievals of the logger. Use GetLogger()
func StartLogger() zerolog.Logger {
logDir = snek.GetString("logger.directory")
2021-11-08 03:48:07 +00:00
if !strings.HasSuffix(logDir, "/") {
2021-11-14 22:06:15 +00:00
logDir += "/"
2021-11-08 03:48:07 +00:00
}
if err := os.MkdirAll(logDir, os.ModePerm); err != nil {
println("cannot create log directory: " + logDir + "(" + err.Error() + ")")
os.Exit(1)
}
2021-09-15 14:04:16 +00:00
2021-11-08 03:48:07 +00:00
logFileName := "HellPot"
2021-09-15 14:04:16 +00:00
if snek.GetBool("logger.use_date_filename") {
2021-11-14 22:06:15 +00:00
tn := strings.ReplaceAll(time.Now().Format(time.RFC822), " ", "_")
tn = strings.ReplaceAll(logFileName, ":", "-")
2021-11-08 03:48:07 +00:00
logFileName = logFileName + "_" + tn
2021-09-15 14:04:16 +00:00
}
2021-11-08 03:48:07 +00:00
CurrentLogFile = logDir + logFileName + ".log"
2021-09-15 14:04:16 +00:00
2021-11-14 22:06:15 +00:00
if logFile, err = os.OpenFile(CurrentLogFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0o666); err != nil {
println("cannot create log file: " + err.Error())
os.Exit(1)
}
2021-09-15 14:04:16 +00:00
multi := zerolog.MultiLevelWriter(zerolog.ConsoleWriter{NoColor: NoColor, Out: os.Stdout}, logFile)
2021-09-15 16:52:18 +00:00
logger = zerolog.New(multi).With().Timestamp().Logger()
return logger
2021-09-15 13:43:01 +00:00
}
// GetLogger retrieves our global logger object
func GetLogger() *zerolog.Logger {
2021-09-15 13:43:01 +00:00
// future logic here
return &logger
}