Files
2025-11-25 15:18:13 +08:00

90 lines
2.2 KiB
Go

package helper
import (
"log"
"os"
"github.com/getsentry/sentry-go"
)
// LogInfo logs an info message to both the local log and Sentry based on the environment.
func LogInfo(message string) {
goEnv := os.Getenv("GO_ENV")
if goEnv == "" {
log.Fatal("GO_ENV is not set in error_logging LogInfo. Please set the GO_ENV environment variable.")
}
if goEnv == "development" || goEnv == "debug" {
log.Println("INFO:", message)
}
if goEnv == "production" || goEnv == "canary" {
log.Println("INFO:", message)
}
}
// LogWarn logs a warning message to both the local log and Sentry based on the environment.
func LogWarn(message string) {
goEnv := os.Getenv("GO_ENV")
if goEnv == "" {
log.Fatal("GO_ENV is not set in error_logging LogWarn. Please set the GO_ENV environment variable.")
}
switch goEnv {
case "production", "canary":
sentry.CaptureMessage("WARNING: " + message)
case "development", "debug":
log.Println("WARNING:", message)
}
}
// LogError logs an error message to both the local log and Sentry based on the environment.
func LogError(err error, message string) {
goEnv := os.Getenv("GO_ENV")
if goEnv == "" {
log.Fatal("GO_ENV is not set in error_logging LogError. Please set the GO_ENV environment variable.")
}
switch goEnv {
case "production", "canary":
if err != nil {
sentry.CaptureException(err)
} else {
sentry.CaptureMessage("ERROR: " + message)
}
log.Printf("ERROR: %s: %v", message, err)
case "development", "debug":
if err != nil {
log.Printf("ERROR: %s: %v", message, err)
} else {
log.Println("ERROR:", message)
}
}
}
// LogFatal logs a fatal error message to both the local log and Sentry based on the environment and then exits the application.
func LogFatal(err error, message string) {
goEnv := os.Getenv("GO_ENV")
if goEnv == "" {
log.Fatal("GO_ENV is not set in error_logging LogFatal. Please set the GO_ENV environment variable.")
}
switch goEnv {
case "production", "canary":
if err != nil {
sentry.CaptureException(err)
} else {
sentry.CaptureMessage("FATAL: " + message)
}
log.Fatalf("FATAL: %s: %v", message, err)
case "development", "debug":
if err != nil {
log.Fatalf("FATAL: %s: %v", message, err)
} else {
log.Fatalf("FATAL: %s", message)
}
}
}