feat: enable filtering console output by severity level
This commit is contained in:
parent
a2b61ea706
commit
225620da48
@ -23,7 +23,13 @@ func main() {
|
||||
main := fiber.New()
|
||||
|
||||
exps := make([]exporters.TraceExporter, 0)
|
||||
exps = append(exps, exporters.DevConsoleExporter(console_exporter.ProcessorOptions{}))
|
||||
|
||||
envFilter := "OBSERVER_CONSOLE"
|
||||
|
||||
exps = append(exps, exporters.DevConsoleExporter(console_exporter.ProcessorOptions{
|
||||
FilterFromEnvVar: &envFilter,
|
||||
}))
|
||||
|
||||
gelfExp, err := exporters.GelfExporter()
|
||||
if err == nil {
|
||||
exps = append(exps, gelfExp)
|
||||
|
@ -3,6 +3,7 @@ package console_exporter
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"slices"
|
||||
|
||||
"git.ma-al.com/maal-libraries/observer/pkg/attr"
|
||||
@ -22,7 +23,8 @@ type TraceFormatter interface {
|
||||
// Most of options are passed to the formatter.
|
||||
type ProcessorOptions struct {
|
||||
// Try to parse filters from an environment variable with a name provided by this field.
|
||||
// Result will only by applied to unset options. NOT IMPLEMENTED!
|
||||
// Result will only by applied to unset options. Currently it will only attempt to parse
|
||||
// severity level from the variable and use that as a filter.
|
||||
FilterFromEnvVar *string
|
||||
// Filter the output based on the [level.SeverityLevel].
|
||||
FilterOnLevel level.SeverityLevel
|
||||
@ -79,9 +81,16 @@ func NewProcessor(opts ProcessorOptions) trace.SpanProcessor {
|
||||
fmt := NewPrettyMultilineFormatter()
|
||||
formatter = fmt
|
||||
}
|
||||
if opts.FilterFromEnvVar != nil {
|
||||
envFilter := os.Getenv(*opts.FilterFromEnvVar)
|
||||
parsedLvl := level.FromString(envFilter)
|
||||
if parsedLvl != level.SeverityLevel(0) {
|
||||
lvl = parsedLvl
|
||||
}
|
||||
}
|
||||
if opts.FilterOnLevel != level.SeverityLevel(0) {
|
||||
lvl = opts.FilterOnLevel
|
||||
} else {
|
||||
} else if lvl == level.SeverityLevel(0) {
|
||||
lvl = level.TRACE + 1
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
package level
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"git.ma-al.com/maal-libraries/observer/pkg/syslog"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
)
|
||||
@ -61,20 +63,21 @@ func (l SeverityLevel) String() string {
|
||||
}
|
||||
|
||||
func FromString(level string) SeverityLevel {
|
||||
level = strings.ToLower(level)
|
||||
switch level {
|
||||
case "ALERT":
|
||||
case "alert":
|
||||
return ALERT
|
||||
case "CRIT":
|
||||
case "crit", "critical":
|
||||
return CRIT
|
||||
case "ERR":
|
||||
case "err", "error":
|
||||
return ERR
|
||||
case "WARN":
|
||||
case "warn", "warning":
|
||||
return WARN
|
||||
case "INFO":
|
||||
case "info":
|
||||
return INFO
|
||||
case "DEBUG":
|
||||
case "debug":
|
||||
return DEBUG
|
||||
case "TRACE":
|
||||
case "trace":
|
||||
return TRACE
|
||||
default:
|
||||
return unset
|
||||
|
Loading…
Reference in New Issue
Block a user