Natalia Goc
ab5b70704d
Some commonly used at maal attributes have been encoded as consts with convinience wrappers similar to those of semconv package from otel sdk. Additionally some utils that can generate mutliple attributes were added.
101 lines
2.6 KiB
Go
101 lines
2.6 KiB
Go
package level
|
|
|
|
import (
|
|
"git.ma-al.com/gora_filip/pkg/syslog"
|
|
"go.opentelemetry.io/otel/attribute"
|
|
)
|
|
|
|
type SeverityLevel uint8
|
|
|
|
const (
|
|
// This event requires an immediate action. If you suspect that occurence of an event may signal that the
|
|
// data will get lost, corrupted, or that the application will change its behaviour following the event in
|
|
// an undesired way, select the ALERT level.
|
|
ALERT SeverityLevel = iota
|
|
// A critical error has occured. Critical errors are such which can be tough to fix or made the users
|
|
// experience significantly worse but unlike errors that trigger ALERT they can be fixed at any moment.
|
|
CRIT
|
|
// An error has occured but it is not expected to cause any serious issues. These will be often
|
|
// `Internal Server Error` responses from an HTTP server.
|
|
ERR
|
|
// Signals that something suspicious has happened, for example, a query took too long to execute, gaining access
|
|
// to a resource took multiple attempts, a conflict was automatically resolved, etc.
|
|
WARN
|
|
// Used to inform about standard, expected events of an application, like creation of a new object or a new
|
|
// log-in from a user. Information that could be:
|
|
// - used to audit the application,
|
|
// - resolve customer's complaints,
|
|
// - track history of significant changes,
|
|
// - calculate valuable statistics;
|
|
// should be collected and logged at this level.
|
|
INFO
|
|
// Verbose information that is useful and meaningful to application developers and system administrators.
|
|
DEBUG
|
|
// Extremely verbose information that can be used to investigate performance of specific parts of an application.
|
|
// It is transled to [syslog.DEBUG] by [IntoSyslogLevel].
|
|
TRACE
|
|
)
|
|
|
|
func (l SeverityLevel) String() string {
|
|
switch l {
|
|
case ALERT:
|
|
return "ALERT"
|
|
case CRIT:
|
|
return "CRIT"
|
|
case ERR:
|
|
return "ERR"
|
|
case WARN:
|
|
return "WARN"
|
|
case INFO:
|
|
return "INFO"
|
|
case DEBUG:
|
|
return "DEBUG"
|
|
default:
|
|
return "CRIT"
|
|
}
|
|
}
|
|
|
|
func FromString(level string) SeverityLevel {
|
|
switch level {
|
|
case "ALERT":
|
|
return ALERT
|
|
case "CRIT":
|
|
return CRIT
|
|
case "ERR":
|
|
return ERR
|
|
case "WARN":
|
|
return WARN
|
|
case "INFO":
|
|
return INFO
|
|
case "DEBUG":
|
|
return DEBUG
|
|
default:
|
|
return CRIT
|
|
}
|
|
}
|
|
|
|
func (lvl SeverityLevel) IntoTraceAttribute() attribute.KeyValue {
|
|
return attribute.String("level", lvl.String())
|
|
}
|
|
|
|
func (lvl SeverityLevel) IntoSyslogLevel() syslog.SyslogLevel {
|
|
switch lvl {
|
|
case ALERT:
|
|
return syslog.ALERT
|
|
case CRIT:
|
|
return syslog.CRIT
|
|
case ERR:
|
|
return syslog.ERR
|
|
case WARN:
|
|
return syslog.WARNING
|
|
case INFO:
|
|
return syslog.INFO
|
|
case DEBUG:
|
|
return syslog.DEBUG
|
|
case TRACE:
|
|
return syslog.DEBUG
|
|
default:
|
|
return syslog.EMERG
|
|
}
|
|
}
|