Skip to content

Commit 14f3698

Browse files
fix(broker-router): honor --log-level=4 (warn) instead of defaulting to debug
The level switch in setupLogger only handled 0, 8 and -4, so warn (4) and any other value fell through to the default case and were mapped to debug, the most verbose level. The flag value is already a raw slog.Level, so map it directly. The controller binary had the same switch; fixed there too, and its --log-level help text now lists 4=warn. Adds a unit test covering the info/warn/error/debug/arbitrary mappings. Fixes #1143 Signed-off-by: PRAteek-singHWY <prateek23022004@gmail.com>
1 parent e99c0a6 commit 14f3698

3 files changed

Lines changed: 35 additions & 22 deletions

File tree

cmd/main.go

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -55,21 +55,12 @@ func init() {
5555
func main() {
5656
var loglevel int
5757
var logFormat string
58-
flag.IntVar(&loglevel, "log-level", int(slog.LevelInfo), "log level: 0=info, 8=error, -4=debug")
58+
flag.IntVar(&loglevel, "log-level", int(slog.LevelInfo), "log level: 0=info, 4=warn, 8=error, -4=debug")
5959
flag.StringVar(&logFormat, "log-format", "txt", "log format: txt or json")
6060
flag.Parse()
6161

62-
loggerOpts := &slog.HandlerOptions{}
63-
switch loglevel {
64-
case 0:
65-
loggerOpts.Level = slog.LevelInfo
66-
case 8:
67-
loggerOpts.Level = slog.LevelError
68-
case -4:
69-
loggerOpts.Level = slog.LevelDebug
70-
default:
71-
loggerOpts.Level = slog.LevelDebug
72-
}
62+
// flag value is a raw slog.Level (info=0, warn=4, error=8, debug=-4)
63+
loggerOpts := &slog.HandlerOptions{Level: slog.Level(loglevel)}
7364

7465
var slogger *slog.Logger
7566
if logFormat == "json" {

cmd/mcp-broker-router/main.go

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -172,16 +172,8 @@ func parseFlags() *app {
172172

173173
func (a *app) setupLogger() (*slog.HandlerOptions, bool) {
174174
opts := &slog.HandlerOptions{}
175-
switch a.brokerCfg.logLevel {
176-
case 0:
177-
opts.Level = slog.LevelInfo
178-
case 8:
179-
opts.Level = slog.LevelError
180-
case -4:
181-
opts.Level = slog.LevelDebug
182-
default:
183-
opts.Level = slog.LevelDebug
184-
}
175+
// flag value is a raw slog.Level (info=0, warn=4, error=8, debug=-4)
176+
opts.Level = slog.Level(a.brokerCfg.logLevel)
185177

186178
jsonFormat := a.brokerCfg.logFormat == "json"
187179
a.logger = mcpotel.NewTracingLogger(os.Stdout, opts, jsonFormat, nil)

cmd/mcp-broker-router/main_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package main
2+
3+
import (
4+
"log/slog"
5+
"testing"
6+
)
7+
8+
func TestSetupLoggerLevelMapping(t *testing.T) {
9+
cases := []struct {
10+
name string
11+
level int
12+
want slog.Level
13+
}{
14+
{"info", 0, slog.LevelInfo},
15+
{"warn", 4, slog.LevelWarn},
16+
{"error", 8, slog.LevelError},
17+
{"debug", -4, slog.LevelDebug},
18+
{"arbitrary", 2, slog.Level(2)},
19+
}
20+
for _, tc := range cases {
21+
t.Run(tc.name, func(t *testing.T) {
22+
a := &app{}
23+
a.brokerCfg.logLevel = tc.level
24+
opts, _ := a.setupLogger()
25+
if got := opts.Level.Level(); got != tc.want {
26+
t.Errorf("log-level=%d: got %v, want %v", tc.level, got, tc.want)
27+
}
28+
})
29+
}
30+
}

0 commit comments

Comments
 (0)