Files
EpochSilicon/pkg/log/logging.go
2025-07-24 06:21:56 -07:00

91 lines
1.7 KiB
Go

package log
import (
"github.com/rs/zerolog"
"os"
"path/filepath"
)
const ApplicationSupportDir = "/Library/Application Support/EpochSilicon"
var (
logger zerolog.Logger
logFilePointer *os.File
logFilePath = filepath.Join(ApplicationSupportDir, "EpochSilicon.log")
)
func SetupLogging() {
logFilePointer = nil
ToConsole(zerolog.InfoLevel)
}
func Close() {
if logFilePointer != nil {
logFilePointer.Close()
}
}
func ToFile(level zerolog.Level) {
Close()
var err error
logFilePointer, err = os.OpenFile(logFilePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
logger.Error().Msg(err.Error())
return
}
logger = zerolog.New(logFilePointer).With().Timestamp().Logger().Level(level)
}
func ToConsole(level zerolog.Level) {
Close()
logger = zerolog.New(os.Stdout).With().Timestamp().Logger().Level(level)
}
func Debug(msg string) {
logger.Debug().Msg(msg)
}
func Debugf(format string, args ...interface{}) {
logger.Debug().Msgf(format, args...)
}
func Info(msg string) {
logger.Info().Msg(msg)
}
func Infof(format string, args ...interface{}) {
logger.Info().Msgf(format, args...)
}
func Warn(msg string) {
logger.Warn().Msg(msg)
}
func Warnf(format string, args ...interface{}) {
logger.Warn().Msgf(format, args...)
}
func Error(msg string) {
logger.Error().Msg(msg)
}
func Errorf(format string, args ...interface{}) {
logger.Error().Msgf(format, args...)
}
func Fatal(msg string) {
logger.Fatal().Msg(msg)
}
func Fatalf(format string, args ...interface{}) {
logger.Fatal().Msgf(format, args...)
}
func Panic(msg string) {
logger.Panic().Msg(msg)
}
func Panicf(format string, args ...interface{}) {
logger.Panic().Msgf(format, args...)
}