Files
gosqldump/internal/logger/init.go
Aaron Guise 2f43e96904
All checks were successful
CI / build (push) Successful in 2m59s
feat: Project Started 🎉
2024-08-30 12:21:09 +12:00

49 lines
1.0 KiB
Go

package logger
import (
"errors"
"fmt"
"github.com/charmbracelet/log"
"github.com/spf13/viper"
"hub.cybercinch.nz/guisea/gosqldump/internal/config/key"
"os"
"path/filepath"
"time"
"github.com/samber/lo"
"hub.cybercinch.nz/guisea/gosqldump/internal/filesystem"
"hub.cybercinch.nz/guisea/gosqldump/internal/where"
)
func Init() error {
logsPath := where.Logs()
if logsPath == "" {
return errors.New("logs path is not set")
}
today := time.Now().Format("2006-01-02")
logFilePath := filepath.Join(logsPath, fmt.Sprintf("%s.log", today))
if !lo.Must(filesystem.Api().Exists(logFilePath)) {
lo.Must(filesystem.Api().Create(logFilePath))
}
logFile, err := filesystem.Api().OpenFile(logFilePath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
return err
}
logger := log.NewWithOptions(logFile, log.Options{
TimeFormat: time.TimeOnly,
ReportTimestamp: true,
ReportCaller: viper.GetBool(key.LogsReportCaller),
})
level, _ := log.ParseLevel(key.LogsLevel)
logger.SetLevel(level)
log.SetDefault(logger)
return nil
}