Skip to content

Commit c0a68f5

Browse files
committed
change to use slog
1 parent 30b2952 commit c0a68f5

File tree

13 files changed

+42
-568
lines changed

13 files changed

+42
-568
lines changed

internal/ghmcp/server.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"github.com/github/github-mcp-server/pkg/inventory"
1919
"github.com/github/github-mcp-server/pkg/lockdown"
2020
mcplog "github.com/github/github-mcp-server/pkg/log"
21+
"github.com/github/github-mcp-server/pkg/observability"
2122
"github.com/github/github-mcp-server/pkg/raw"
2223
"github.com/github/github-mcp-server/pkg/scopes"
2324
"github.com/github/github-mcp-server/pkg/translations"
@@ -128,7 +129,7 @@ func NewStdioMCPServer(ctx context.Context, cfg github.MCPServerConfig) (*mcp.Se
128129
},
129130
cfg.ContentWindowSize,
130131
featureChecker,
131-
cfg.Logger,
132+
observability.NewExporters(cfg.Logger, nil),
132133
)
133134
// Build and register the tool/resource/prompt inventory
134135
inventoryBuilder := github.NewInventory(cfg.Translator).

pkg/github/dependencies.go

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@ import (
1313
"github.com/github/github-mcp-server/pkg/inventory"
1414
"github.com/github/github-mcp-server/pkg/lockdown"
1515
"github.com/github/github-mcp-server/pkg/observability"
16-
obsvLog "github.com/github/github-mcp-server/pkg/observability/log"
17-
obsvMetrics "github.com/github/github-mcp-server/pkg/observability/metrics"
16+
"github.com/github/github-mcp-server/pkg/observability/metrics"
1817
"github.com/github/github-mcp-server/pkg/raw"
1918
"github.com/github/github-mcp-server/pkg/scopes"
2019
"github.com/github/github-mcp-server/pkg/translations"
@@ -99,11 +98,13 @@ type ToolDependencies interface {
9998
// IsFeatureEnabled checks if a feature flag is enabled.
10099
IsFeatureEnabled(ctx context.Context, flagName string) bool
101100

102-
// Logger returns the logger
103-
Logger(ctx context.Context) obsvLog.Logger
101+
// Logger returns the structured logger, optionally enriched with
102+
// request-scoped data from ctx. Integrators provide their own slog.Handler
103+
// to control where logs are sent.
104+
Logger(ctx context.Context) *slog.Logger
104105

105106
// Metrics returns the metrics client
106-
Metrics(ctx context.Context) obsvMetrics.Metrics
107+
Metrics(ctx context.Context) metrics.Metrics
107108
}
108109

109110
// BaseDeps is the standard implementation of ToolDependencies for the local server.
@@ -141,14 +142,8 @@ func NewBaseDeps(
141142
flags FeatureFlags,
142143
contentWindowSize int,
143144
featureChecker inventory.FeatureFlagChecker,
144-
logger *slog.Logger,
145+
obsv observability.Exporters,
145146
) *BaseDeps {
146-
var obsv observability.Exporters
147-
if logger != nil {
148-
obsv = observability.NewExporters(obsvLog.NewSlogLogger(logger, obsvLog.InfoLevel), obsvMetrics.NewNoopMetrics())
149-
} else {
150-
obsv = observability.NewExporters(obsvLog.NewNoopLogger(), obsvMetrics.NewNoopMetrics())
151-
}
152147
return &BaseDeps{
153148
Client: client,
154149
GQLClient: gqlClient,
@@ -192,15 +187,15 @@ func (d BaseDeps) GetFlags(_ context.Context) FeatureFlags { return d.Flags }
192187
func (d BaseDeps) GetContentWindowSize() int { return d.ContentWindowSize }
193188

194189
// Logger implements ToolDependencies.
195-
func (d BaseDeps) Logger(ctx context.Context) obsvLog.Logger {
190+
func (d BaseDeps) Logger(_ context.Context) *slog.Logger {
196191
if d.Obsv == nil {
197192
return nil
198193
}
199-
return d.Obsv.Logger(ctx)
194+
return d.Obsv.Logger()
200195
}
201196

202197
// Metrics implements ToolDependencies.
203-
func (d BaseDeps) Metrics(ctx context.Context) obsvMetrics.Metrics {
198+
func (d BaseDeps) Metrics(ctx context.Context) metrics.Metrics {
204199
if d.Obsv == nil {
205200
return nil
206201
}
@@ -298,14 +293,8 @@ func NewRequestDeps(
298293
t translations.TranslationHelperFunc,
299294
contentWindowSize int,
300295
featureChecker inventory.FeatureFlagChecker,
301-
logger *slog.Logger,
296+
obsv observability.Exporters,
302297
) *RequestDeps {
303-
var obsv observability.Exporters
304-
if logger != nil {
305-
obsv = observability.NewExporters(obsvLog.NewSlogLogger(logger, obsvLog.InfoLevel), obsvMetrics.NewNoopMetrics())
306-
} else {
307-
obsv = observability.NewExporters(obsvLog.NewNoopLogger(), obsvMetrics.NewNoopMetrics())
308-
}
309298
return &RequestDeps{
310299
apiHosts: apiHosts,
311300
version: version,
@@ -423,12 +412,12 @@ func (d *RequestDeps) GetFlags(ctx context.Context) FeatureFlags {
423412
func (d *RequestDeps) GetContentWindowSize() int { return d.ContentWindowSize }
424413

425414
// Logger implements ToolDependencies.
426-
func (d *RequestDeps) Logger(ctx context.Context) obsvLog.Logger {
427-
return d.obsv.Logger(ctx)
415+
func (d *RequestDeps) Logger(_ context.Context) *slog.Logger {
416+
return d.obsv.Logger()
428417
}
429418

430419
// Metrics implements ToolDependencies.
431-
func (d *RequestDeps) Metrics(ctx context.Context) obsvMetrics.Metrics {
420+
func (d *RequestDeps) Metrics(ctx context.Context) metrics.Metrics {
432421
return d.obsv.Metrics(ctx)
433422
}
434423

pkg/github/dependencies_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func TestIsFeatureEnabled_WithEnabledFlag(t *testing.T) {
2828
github.FeatureFlags{},
2929
0, // contentWindowSize
3030
checker, // featureChecker
31-
nil, // logger
31+
nil, // obsv
3232
)
3333

3434
// Test enabled flag
@@ -53,7 +53,7 @@ func TestIsFeatureEnabled_WithoutChecker(t *testing.T) {
5353
github.FeatureFlags{},
5454
0, // contentWindowSize
5555
nil, // featureChecker (nil)
56-
nil, // logger
56+
nil, // obsv
5757
)
5858

5959
// Should return false when checker is nil
@@ -78,7 +78,7 @@ func TestIsFeatureEnabled_EmptyFlagName(t *testing.T) {
7878
github.FeatureFlags{},
7979
0, // contentWindowSize
8080
checker, // featureChecker
81-
nil, // logger
81+
nil, // obsv
8282
)
8383

8484
// Should return false for empty flag name
@@ -103,7 +103,7 @@ func TestIsFeatureEnabled_CheckerError(t *testing.T) {
103103
github.FeatureFlags{},
104104
0, // contentWindowSize
105105
checker, // featureChecker
106-
nil, // logger
106+
nil, // obsv
107107
)
108108

109109
// Should return false and log error (not crash)

pkg/github/server_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ import (
55
"encoding/json"
66
"errors"
77
"fmt"
8+
"log/slog"
89
"net/http"
910
"testing"
1011
"time"
1112

1213
"github.com/github/github-mcp-server/pkg/lockdown"
1314
"github.com/github/github-mcp-server/pkg/observability"
14-
mcpLog "github.com/github/github-mcp-server/pkg/observability/log"
15-
mcpMetrics "github.com/github/github-mcp-server/pkg/observability/metrics"
15+
"github.com/github/github-mcp-server/pkg/observability/metrics"
1616
"github.com/github/github-mcp-server/pkg/raw"
1717
"github.com/github/github-mcp-server/pkg/translations"
1818
gogithub "github.com/google/go-github/v82/github"
@@ -64,17 +64,17 @@ func (s stubDeps) GetT() translations.TranslationHelperFunc { return s.
6464
func (s stubDeps) GetFlags(_ context.Context) FeatureFlags { return s.flags }
6565
func (s stubDeps) GetContentWindowSize() int { return s.contentWindowSize }
6666
func (s stubDeps) IsFeatureEnabled(_ context.Context, _ string) bool { return false }
67-
func (s stubDeps) Logger(ctx context.Context) mcpLog.Logger {
67+
func (s stubDeps) Logger(_ context.Context) *slog.Logger {
6868
if s.obsv != nil {
69-
return s.obsv.Logger(ctx)
69+
return s.obsv.Logger()
7070
}
71-
return mcpLog.NewNoopLogger()
71+
return nil
7272
}
73-
func (s stubDeps) Metrics(ctx context.Context) mcpMetrics.Metrics {
73+
func (s stubDeps) Metrics(ctx context.Context) metrics.Metrics {
7474
if s.obsv != nil {
7575
return s.obsv.Metrics(ctx)
7676
}
77-
return mcpMetrics.NewNoopMetrics()
77+
return metrics.NewNoopMetrics()
7878
}
7979

8080
// Helper functions to create stub client functions for error testing

pkg/http/server.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/github/github-mcp-server/pkg/http/oauth"
1818
"github.com/github/github-mcp-server/pkg/inventory"
1919
"github.com/github/github-mcp-server/pkg/lockdown"
20+
"github.com/github/github-mcp-server/pkg/observability"
2021
"github.com/github/github-mcp-server/pkg/scopes"
2122
"github.com/github/github-mcp-server/pkg/translations"
2223
"github.com/github/github-mcp-server/pkg/utils"
@@ -114,7 +115,7 @@ func RunHTTPServer(cfg ServerConfig) error {
114115
t,
115116
cfg.ContentWindowSize,
116117
featureChecker,
117-
logger,
118+
observability.NewExporters(logger, nil),
118119
)
119120

120121
// Initialize the global tool scope map

pkg/observability/log/field.go

Lines changed: 0 additions & 29 deletions
This file was deleted.

pkg/observability/log/level.go

Lines changed: 0 additions & 23 deletions
This file was deleted.

pkg/observability/log/logger.go

Lines changed: 0 additions & 20 deletions
This file was deleted.

pkg/observability/log/noop_adapter.go

Lines changed: 0 additions & 61 deletions
This file was deleted.

0 commit comments

Comments
 (0)