Skip to content

Commit 13e6725

Browse files
committed
Update(logs): support json format
1 parent 8e2cb6c commit 13e6725

File tree

1 file changed

+30
-12
lines changed

1 file changed

+30
-12
lines changed

app/app.go

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,17 @@ func NewApp(name string, version string) DNSBLApp {
102102
return nil
103103
},
104104
},
105+
&cli.StringFlag{
106+
Name: "log.format",
107+
Value: "text",
108+
Usage: "format, text is logfmt or use json",
109+
Action: func(cCtx *cli.Context, v string) error {
110+
if v != "text" && v != "json" {
111+
return cli.Exit("We currently support only text and json: --log.format", 2)
112+
}
113+
return nil
114+
},
115+
},
105116
}
106117

107118
return DNSBLApp{
@@ -110,29 +121,36 @@ func NewApp(name string, version string) DNSBLApp {
110121
}
111122

112123
func (a *DNSBLApp) Bootstrap() {
113-
a.App.Action = func(ctx *cli.Context) error {
124+
a.App.Action = func(cCtx *cli.Context) error {
114125
// setup logging
115126
handler := &slog.HandlerOptions{}
116127
var writer io.Writer
117128

118-
if ctx.Bool("log.debug") {
129+
if cCtx.Bool("log.debug") {
119130
handler.Level = slog.LevelDebug
120131
}
121132

122-
switch ctx.String("log.output") {
133+
switch cCtx.String("log.output") {
123134
case "stdout":
124135
writer = os.Stdout
125136
case "stderr":
126137
writer = os.Stderr
127138
}
128139

129-
log := slog.New(handler.NewTextHandler(writer))
140+
var logHandler slog.Handler
141+
if cCtx.String("log.format") == "text" {
142+
logHandler = handler.NewTextHandler(writer)
143+
} else {
144+
logHandler = handler.NewJSONHandler(writer)
145+
}
146+
147+
log := slog.New(logHandler)
130148

131149
c := config.Config{
132150
Logger: log.With("area", "config"),
133151
}
134152

135-
cfgRbls, err := c.LoadFile(ctx.String("config.rbls"))
153+
cfgRbls, err := c.LoadFile(cCtx.String("config.rbls"))
136154
if err != nil {
137155
return err
138156
}
@@ -142,7 +160,7 @@ func (a *DNSBLApp) Bootstrap() {
142160
return fmt.Errorf("unable to load the rbls from the config: %w", err)
143161
}
144162

145-
cfgTargets, err := c.LoadFile(ctx.String("config.targets"))
163+
cfgTargets, err := c.LoadFile(cCtx.String("config.targets"))
146164
if err != nil {
147165
return err
148166
}
@@ -174,12 +192,12 @@ func (a *DNSBLApp) Bootstrap() {
174192
return err
175193
}
176194

177-
rblCollector := setup.CreateCollector(rbls, targets, ctx.Bool("config.domain-based"), dnsUtil, log.With("area", "metrics"))
195+
rblCollector := setup.CreateCollector(rbls, targets, cCtx.Bool("config.domain-based"), dnsUtil, log.With("area", "metrics"))
178196
registry.MustRegister(rblCollector)
179197

180198
registryExporter := setup.CreateRegistry()
181199

182-
if ctx.Bool("web.include-exporter-metrics") {
200+
if cCtx.Bool("web.include-exporter-metrics") {
183201
log.Info("Exposing exporter metrics")
184202

185203
registryExporter.MustRegister(
@@ -193,21 +211,21 @@ func (a *DNSBLApp) Bootstrap() {
193211
RegistryExporter: registryExporter,
194212
}
195213

196-
http.Handle(ctx.String("web.telemetry-path"), mHandler.Handler())
214+
http.Handle(cCtx.String("web.telemetry-path"), mHandler.Handler())
197215

198216
pHandler := prober.ProberHandler{
199217
DNS: dnsUtil,
200218
Rbls: rbls,
201-
DomainBased: ctx.Bool("config.domain-based"),
219+
DomainBased: cCtx.Bool("config.domain-based"),
202220
Logger: log.With("area", "prober"),
203221
}
204222
http.Handle("/prober", pHandler)
205223

206224
log.Info("starting exporter",
207-
slog.String("web.listen-address", ctx.String("web.listen-address")),
225+
slog.String("web.listen-address", cCtx.String("web.listen-address")),
208226
slog.String("resolver", resolver),
209227
)
210-
err = http.ListenAndServe(ctx.String("web.listen-address"), nil)
228+
err = http.ListenAndServe(cCtx.String("web.listen-address"), nil)
211229
if err != nil {
212230
return err
213231
}

0 commit comments

Comments
 (0)