logger.go 844 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package logger
  2. import (
  3. "log/slog"
  4. "os"
  5. "path/filepath"
  6. "github.com/ayn2op/discordo/internal/config"
  7. )
  8. // Recursively creates the log directory if it does not exist already and returns the path to the log file.
  9. func initialize() (string, error) {
  10. path, err := os.UserCacheDir()
  11. if err != nil {
  12. return "", err
  13. }
  14. path = filepath.Join(path, config.Name)
  15. if err := os.MkdirAll(path, os.ModePerm); err != nil {
  16. return "", err
  17. }
  18. return filepath.Join(path, "logs.txt"), nil
  19. }
  20. // Opens the log file and configures standard logger.
  21. func Load() error {
  22. path, err := initialize()
  23. if err != nil {
  24. return err
  25. }
  26. file, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY, os.ModePerm)
  27. if err != nil {
  28. return err
  29. }
  30. l := slog.New(slog.NewTextHandler(file, &slog.HandlerOptions{AddSource: true}))
  31. slog.SetDefault(l)
  32. return nil
  33. }