-
Notifications
You must be signed in to change notification settings - Fork 604
/
Copy pathseverity.go
124 lines (107 loc) · 3.84 KB
/
severity.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package minsev // import "go.opentelemetry.io/contrib/processors/minsev"
import (
"sync/atomic"
"go.opentelemetry.io/otel/log"
)
// Severity represents a log record severity (also known as log level). Smaller
// numerical values correspond to less severe log records (such as debug
// events), larger numerical values correspond to more severe log records (such
// as errors and critical events).
type Severity int
// Severity values defined by OpenTelemetry.
const (
// A fine-grained debugging log record. Typically disabled in default
// configurations.
SeverityTrace1 Severity = -8 // TRACE
SeverityTrace2 Severity = -7 // TRACE2
SeverityTrace3 Severity = -6 // TRACE3
SeverityTrace4 Severity = -5 // TRACE4
// A debugging log record.
SeverityDebug1 Severity = -4 // DEBUG
SeverityDebug2 Severity = -3 // DEBUG2
SeverityDebug3 Severity = -2 // DEBUG3
SeverityDebug4 Severity = -1 // DEBUG4
// An informational log record. Indicates that an event happened.
SeverityInfo1 Severity = 0 // INFO
SeverityInfo2 Severity = 1 // INFO2
SeverityInfo3 Severity = 2 // INFO3
SeverityInfo4 Severity = 3 // INFO4
// A warning log record. Not an error but is likely more important than an
// informational event.
SeverityWarn1 Severity = 4 // WARN
SeverityWarn2 Severity = 5 // WARN2
SeverityWarn3 Severity = 6 // WARN3
SeverityWarn4 Severity = 7 // WARN4
// An error log record. Something went wrong.
SeverityError1 Severity = 8 // ERROR
SeverityError2 Severity = 9 // ERROR2
SeverityError3 Severity = 10 // ERROR3
SeverityError4 Severity = 11 // ERROR4
// A fatal log record such as application or system crash.
SeverityFatal1 Severity = 12 // FATAL
SeverityFatal2 Severity = 13 // FATAL2
SeverityFatal3 Severity = 14 // FATAL3
SeverityFatal4 Severity = 15 // FATAL4
// Convenience definitions for the base severity of each level.
SeverityTrace = SeverityTrace1
SeverityDebug = SeverityDebug1
SeverityInfo = SeverityInfo1
SeverityWarn = SeverityWarn1
SeverityError = SeverityError1
SeverityFatal = SeverityFatal1
)
// Severity returns the receiver translated to a [log.Severity].
//
// It implements [Severitier].
func (s Severity) Severity() log.Severity {
// Unknown defaults to log.SeverityUndefined.
return translations[s]
}
var translations = map[Severity]log.Severity{
SeverityTrace1: log.SeverityTrace1,
SeverityTrace2: log.SeverityTrace2,
SeverityTrace3: log.SeverityTrace3,
SeverityTrace4: log.SeverityTrace4,
SeverityDebug1: log.SeverityDebug1,
SeverityDebug2: log.SeverityDebug2,
SeverityDebug3: log.SeverityDebug3,
SeverityDebug4: log.SeverityDebug4,
SeverityInfo1: log.SeverityInfo1,
SeverityInfo2: log.SeverityInfo2,
SeverityInfo3: log.SeverityInfo3,
SeverityInfo4: log.SeverityInfo4,
SeverityWarn1: log.SeverityWarn1,
SeverityWarn2: log.SeverityWarn2,
SeverityWarn3: log.SeverityWarn3,
SeverityWarn4: log.SeverityWarn4,
SeverityError1: log.SeverityError1,
SeverityError2: log.SeverityError2,
SeverityError3: log.SeverityError3,
SeverityError4: log.SeverityError4,
SeverityFatal1: log.SeverityFatal1,
SeverityFatal2: log.SeverityFatal2,
SeverityFatal3: log.SeverityFatal3,
SeverityFatal4: log.SeverityFatal4,
}
// A SeverityVar is a [Severity] variable, to allow a [LogProcessor] severity
// to change dynamically. It implements [Severitier] as well as a Set method,
// and it is safe for use by multiple goroutines.
//
// The zero SeverityVar corresponds to [SeverityInfo].
type SeverityVar struct {
val atomic.Int64
}
// Severity returns v's severity.
func (v *SeverityVar) Severity() log.Severity {
return Severity(int(v.val.Load())).Severity()
}
// Set sets v's Severity to l.
func (v *SeverityVar) Set(l Severity) {
v.val.Store(int64(l))
}
// A Severitier provides a [log.Severity] value.
type Severitier interface {
Severity() log.Severity
}