-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.go
132 lines (118 loc) · 2.41 KB
/
utils.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
125
126
127
128
129
130
131
132
package loggergo
import "log/slog"
// OutputType represents the type of output for the logger.
type OutputType int
const (
// OutputConsole represents console output.
OutputConsole OutputType = iota
// OutputOtel represents otel output.
OutputOtel
// OutputFanout represents both console and otel output.
OutputFanout
)
func (o OutputType) String() string {
switch o {
case OutputConsole:
return "console"
case OutputOtel:
return "otel"
case OutputFanout:
return "fanout"
default:
return "unknown"
}
}
func OutputTypeFromString(name string) OutputType {
switch name {
case "console":
return OutputConsole
case "otel":
return OutputOtel
case "fanout":
return OutputFanout
default:
return OutputConsole
}
}
// LogFormat represents the format of the log.
type LogFormat int
const (
// LogFormatText represents text format.
LogFormatText LogFormat = iota
// LogFormatJSON represents JSON format.
LogFormatJSON
// LogFormatOtel represents OTEL (JSON) format.
LogFormatOtel
)
func (f LogFormat) String() string {
switch f {
case LogFormatText:
return "text"
case LogFormatJSON:
return "json"
case LogFormatOtel:
return "otel"
default:
return "unknown"
}
}
func LogFormatFromString(name string) LogFormat {
switch name {
case "text":
return LogFormatText
case "json":
return LogFormatJSON
case "otel":
return LogFormatOtel
default:
return LogFormatText
}
}
// DevFlavor represents the flavor of the development environment.
type DevFlavor int
const (
// DevFlavorTint represents the "tint" development flavor.
DevFlavorTint DevFlavor = iota
// DevFlavorSlogor represents the "slogor" development flavor.
DevFlavorSlogor
// DevFlavorDevslog represents the production "devslog" flavor.
DevFlavorDevslog
)
func (f DevFlavor) String() string {
switch f {
case DevFlavorTint:
return "tint"
case DevFlavorSlogor:
return "slogor"
case DevFlavorDevslog:
return "devslog"
default:
return "unknown"
}
}
func DevFlavorFromString(name string) DevFlavor {
switch name {
case "tint":
return DevFlavorTint
case "slogor":
return DevFlavorSlogor
case "devslog":
return DevFlavorDevslog
default:
return DevFlavorTint
}
}
func LogLevelFromString(name string) slog.Level {
switch name {
case "debug":
return slog.LevelDebug
case "info":
return slog.LevelInfo
case "warn":
return slog.LevelWarn
case "error":
return slog.LevelError
default:
return slog.LevelInfo
}
}