go_rabbitmq/app/internals/logger/logger.go

117 lines
3.2 KiB
Go

package logger
import (
"fmt"
"github.com/getsentry/sentry-go"
"os"
)
var (
colorsTags = map[string]string{
"Reset": "\033[0m",
"Bright": "\033[1m",
"Dim": "\033[2m",
"Underscore": "\033[4m",
"Blink": "\033[5m",
"Reverse": "\033[7m",
"Hidden": "\033[8m",
"FgBlack": "\033[30m",
"FgRed": "\033[31m",
"FgGreen": "\033[32m",
"FgYellow": "\033[33m",
"FgBlue": "\033[34m",
"FgMagenta": "\033[35m",
"FgCyan": "\033[36m",
"FgWhite": "\033[37m",
"FgGray": "\033[90m",
"BgBlack": "\033[40m",
"BgRed": "\033[41m",
"BgGreen": "\033[42m",
"BgYellow": "\033[43m",
"BgBlue": "\033[44m",
"BgMagenta": "\033[45m",
"BgCyan": "\033[46m",
"BgWhite": "\033[47m",
"BgGray": "\033[100m",
}
)
type Logger struct {
sentryEnabled bool
}
func NewLogger() *Logger {
logger := &Logger{}
if env := os.Getenv("SENTRY_ENVIRONMENT"); env != "" {
err := sentry.Init(sentry.ClientOptions{
Dsn: "https://7698f4c6119546638794f11e26ee11e9@sentry.sis.ski/11",
Environment: env,
TracesSampleRate: 1.0,
})
if err != nil {
fmt.Printf("Sentry initialization failed: %v\n", err)
} else {
logger.sentryEnabled = true
}
}
return logger
}
func (l *Logger) Info(message string) {
fmt.Printf("%sINFO%s: %s%s\n", colorsTags["BgWhite"]+colorsTags["FgBlack"], colorsTags["Reset"], message, colorsTags["Reset"])
}
func (l *Logger) Debug(message string) {
fmt.Printf("%sDEBUG%s: %s%s\n", colorsTags["BgBlue"], colorsTags["Reset"], message, colorsTags["Reset"])
}
func (l *Logger) Fatal(message string) {
fmt.Printf("%sFATAL%s: %s%s%s%s%s%s%s\n", colorsTags["Blink"]+colorsTags["BgRed"], colorsTags["Reset"], colorsTags["Bright"], colorsTags["FgMagenta"], message, colorsTags["Reset"], colorsTags["Reset"], colorsTags["Reset"])
if l.sentryEnabled {
sentry.ConfigureScope(func(scope *sentry.Scope) {
scope.SetLevel(sentry.LevelFatal)
})
sentry.CaptureMessage(message)
}
}
func (l *Logger) Error(message string) {
fmt.Printf("%sERROR%s: %s%s%s\n", colorsTags["BgRed"], colorsTags["Reset"], colorsTags["FgRed"], message, colorsTags["Reset"])
if l.sentryEnabled {
sentry.ConfigureScope(func(scope *sentry.Scope) {
scope.SetLevel(sentry.LevelError)
})
sentry.CaptureMessage(message)
}
}
func (l *Logger) Critical(message string) {
fmt.Printf("%sCRITICAL%s: %s%s%s%s%s\n", colorsTags["Blink"]+colorsTags["BgRed"], colorsTags["Reset"], colorsTags["FgMagenta"], message, colorsTags["Reset"], colorsTags["Reset"], colorsTags["Reset"])
if l.sentryEnabled {
sentry.ConfigureScope(func(scope *sentry.Scope) {
scope.SetLevel("critical")
})
sentry.CaptureMessage(message)
}
}
func (l *Logger) Warning(message string) {
fmt.Printf("%sWARN%s: %s%s\n", colorsTags["BgYellow"]+colorsTags["FgBlack"], colorsTags["Reset"], message, colorsTags["Reset"])
if l.sentryEnabled {
sentry.ConfigureScope(func(scope *sentry.Scope) {
scope.SetLevel(sentry.LevelWarning)
})
sentry.CaptureMessage(message)
}
}
func (l *Logger) Log(message string) {
fmt.Println(message)
sentry.ConfigureScope(func(scope *sentry.Scope) {
scope.SetLevel("log")
})
sentry.CaptureMessage(message)
}