loop-plugin-sentry/server/plugin/webhook_formatters.go

50 lines
1.3 KiB
Go

package plugin
import (
"fmt"
"strings"
)
// levelToColor возвращает цвет для уровня события Sentry
func levelToColor(level string) string {
switch strings.ToLower(level) {
case "fatal":
return "#B10DC9" // фиолетовый, критический
case "error":
return "#FF4136" // красный
case "warning":
return "#FF851B" // оранжевый
case "log":
return "#AAAAAA" // серый
case "info":
return "#0074D9" // синий
case "debug":
return "#2ECC40" // зелёный
default:
return "#AAAAAA" // серый для неизвестных
}
}
// getTagFromArray извлекает значение тега из массива тегов
func getTagFromArray(tags [][]string, key string) string {
for _, t := range tags {
if len(t) == 2 && t[0] == key {
return t[1]
}
}
return ""
}
// formatStacktrace форматирует стектрейс для отображения
func formatStacktrace(ex *SentryExceptionValue) string {
if ex == nil || len(ex.Stacktrace.Frames) == 0 {
return ""
}
lines := make([]string, 0, len(ex.Stacktrace.Frames))
for _, f := range ex.Stacktrace.Frames {
lines = append(lines, fmt.Sprintf("%s:%d %s - %s", f.Filename, f.Lineno, f.Function, f.ContextLine))
}
return strings.Join(lines, "\n")
}