logger.go 725 B

12345678910111213141516171819202122232425262728293031323334
  1. package logger
  2. import (
  3. "fmt"
  4. "log/slog"
  5. "os"
  6. "path/filepath"
  7. "github.com/ayn2op/discordo/internal/consts"
  8. "github.com/lmittmann/tint"
  9. )
  10. const fileName = "logs.txt"
  11. func DefaultPath() string {
  12. return filepath.Join(consts.CacheDir(), fileName)
  13. }
  14. // Load opens the log file and configures default logger.
  15. func Load(path string, level slog.Level) error {
  16. if err := os.MkdirAll(filepath.Dir(path), os.ModePerm); err != nil {
  17. return err
  18. }
  19. file, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY, os.ModePerm)
  20. if err != nil {
  21. return fmt.Errorf("failed to open log file: %w", err)
  22. }
  23. opts := &tint.Options{Level: level}
  24. handler := tint.NewHandler(file, opts)
  25. slog.SetDefault(slog.New(handler))
  26. return nil
  27. }