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.DebugLevel) } 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 } multi := zerolog.MultiLevelWriter(logFilePointer, os.Stdout) logger = zerolog.New(multi).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...) }