logger.go 966 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package logger
  2. import (
  3. "context"
  4. "log/slog"
  5. "os"
  6. )
  7. var (
  8. // HookOutputEnabled writes hook output into logs if true
  9. HookOutputEnabled = false
  10. // RequestOutputEnabled writes HTTP request into logs if true
  11. RequestOutputEnabled = false
  12. )
  13. // Configure logger
  14. func Configure(format, level string) {
  15. logLevel := slog.LevelDebug
  16. switch level {
  17. case "info":
  18. logLevel = slog.LevelInfo
  19. case "warn":
  20. logLevel = slog.LevelWarn
  21. case "error":
  22. logLevel = slog.LevelError
  23. }
  24. opts := slog.HandlerOptions{
  25. Level: logLevel,
  26. AddSource: logLevel == slog.LevelDebug,
  27. }
  28. var logger *slog.Logger
  29. if format == "json" {
  30. logger = slog.New(slog.NewJSONHandler(os.Stdout, &opts))
  31. } else {
  32. logger = slog.New(slog.NewTextHandler(os.Stdout, &opts))
  33. }
  34. slog.SetDefault(logger)
  35. }
  36. // LogIf writ log on condition
  37. func LogIf(condition bool, level slog.Level, msg string, args ...any) {
  38. if condition {
  39. slog.Log(context.Background(), level, msg, args...)
  40. }
  41. }