Skip to content

Commit 25c669f

Browse files
committed
fix: replace logrus with slog
Signed-off-by: Bailey Hayes <behayes2@gmail.com>
1 parent cbcf29f commit 25c669f

File tree

5 files changed

+28
-29
lines changed

5 files changed

+28
-29
lines changed

go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ require (
77
github.com/josephburnett/jd v1.9.2
88
github.com/mark3labs/mcp-go v0.31.0
99
github.com/migueleliasweb/go-github-mock v1.3.0
10-
github.com/sirupsen/logrus v1.9.3
1110
github.com/spf13/cobra v1.9.1
1211
github.com/spf13/viper v1.20.1
1312
github.com/stretchr/testify v1.10.0

go.sum

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,6 @@ github.com/shurcooL/githubv4 v0.0.0-20240727222349-48295856cce7 h1:cYCy18SHPKRkv
6666
github.com/shurcooL/githubv4 v0.0.0-20240727222349-48295856cce7/go.mod h1:zqMwyHmnN/eDOZOdiTohqIUKUrTFX62PNlu7IJdu0q8=
6767
github.com/shurcooL/graphql v0.0.0-20230722043721-ed46e5a46466 h1:17JxqqJY66GmZVHkmAsGEkcIu0oCe3AM420QDgGwZx0=
6868
github.com/shurcooL/graphql v0.0.0-20230722043721-ed46e5a46466/go.mod h1:9dIRpgIY7hVhoqfe0/FcYp0bpInZaT7dc3BYOprrIUE=
69-
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
70-
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
7169
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
7270
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
7371
github.com/spf13/afero v1.14.0 h1:9tH6MapGnn/j0eb0yIXiLjERO8RB6xIVZRDCX7PtqWA=
@@ -83,7 +81,6 @@ github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqj
8381
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
8482
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
8583
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
86-
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
8784
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
8885
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
8986
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
@@ -98,7 +95,6 @@ golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0
9895
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
9996
golang.org/x/oauth2 v0.29.0 h1:WdYw2tdTK1S8olAzWHdgeqfy+Mtm9XNhv/xJsY65d98=
10097
golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
101-
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
10298
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
10399
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
104100
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=

internal/ghmcp/server.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,15 @@ import (
1212
"strings"
1313
"syscall"
1414

15+
"log/slog"
16+
1517
"github.com/github/github-mcp-server/pkg/github"
1618
mcplog "github.com/github/github-mcp-server/pkg/log"
1719
"github.com/github/github-mcp-server/pkg/translations"
1820
gogithub "github.com/google/go-github/v72/github"
1921
"github.com/mark3labs/mcp-go/mcp"
2022
"github.com/mark3labs/mcp-go/server"
2123
"github.com/shurcooL/githubv4"
22-
"github.com/sirupsen/logrus"
2324
)
2425

2526
type MCPServerConfig struct {
@@ -190,17 +191,19 @@ func RunStdioServer(cfg StdioServerConfig) error {
190191

191192
stdioServer := server.NewStdioServer(ghServer)
192193

193-
logrusLogger := logrus.New()
194+
var slogHandler slog.Handler
194195
if cfg.LogFilePath != "" {
195196
file, err := os.OpenFile(cfg.LogFilePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600)
196197
if err != nil {
197198
return fmt.Errorf("failed to open log file: %w", err)
198199
}
199-
200-
logrusLogger.SetLevel(logrus.DebugLevel)
201-
logrusLogger.SetOutput(file)
200+
slogHandler = slog.NewTextHandler(file, &slog.HandlerOptions{Level: slog.LevelDebug})
201+
} else {
202+
slogHandler = slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: slog.LevelInfo})
202203
}
203-
stdLogger := log.New(logrusLogger.Writer(), "stdioserver", 0)
204+
logger := slog.New(slogHandler)
205+
logger.Info("starting server", "version", cfg.Version, "host", cfg.Host, "dynamicToolsets", cfg.DynamicToolsets, "readOnly", cfg.ReadOnly)
206+
stdLogger := log.New(os.Stderr, "stdioserver", 0)
204207
stdioServer.SetErrorLogger(stdLogger)
205208

206209
if cfg.ExportTranslations {
@@ -214,7 +217,7 @@ func RunStdioServer(cfg StdioServerConfig) error {
214217
in, out := io.Reader(os.Stdin), io.Writer(os.Stdout)
215218

216219
if cfg.EnableCommandLogging {
217-
loggedIO := mcplog.NewIOLogger(in, out, logrusLogger)
220+
loggedIO := mcplog.NewIOLogger(in, out, logger)
218221
in, out = loggedIO, loggedIO
219222
}
220223

@@ -227,9 +230,10 @@ func RunStdioServer(cfg StdioServerConfig) error {
227230
// Wait for shutdown signal
228231
select {
229232
case <-ctx.Done():
230-
logrusLogger.Infof("shutting down server...")
233+
logger.Info("shutting down server", "signal", "context done")
231234
case err := <-errC:
232235
if err != nil {
236+
logger.Error("error running server", "error", err)
233237
return fmt.Errorf("error running server: %w", err)
234238
}
235239
}

pkg/log/io.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@ package log
33
import (
44
"io"
55

6-
log "github.com/sirupsen/logrus"
6+
"log/slog"
77
)
88

99
// IOLogger is a wrapper around io.Reader and io.Writer that can be used
1010
// to log the data being read and written from the underlying streams
1111
type IOLogger struct {
1212
reader io.Reader
1313
writer io.Writer
14-
logger *log.Logger
14+
logger *slog.Logger
1515
}
1616

1717
// NewIOLogger creates a new IOLogger instance
18-
func NewIOLogger(r io.Reader, w io.Writer, logger *log.Logger) *IOLogger {
18+
func NewIOLogger(r io.Reader, w io.Writer, logger *slog.Logger) *IOLogger {
1919
return &IOLogger{
2020
reader: r,
2121
writer: w,
@@ -30,7 +30,7 @@ func (l *IOLogger) Read(p []byte) (n int, err error) {
3030
}
3131
n, err = l.reader.Read(p)
3232
if n > 0 {
33-
l.logger.Infof("[stdin]: received %d bytes: %s", n, string(p[:n]))
33+
l.logger.Info("[stdin]: received bytes", "count", n, "data", string(p[:n]))
3434
}
3535
return n, err
3636
}
@@ -40,6 +40,6 @@ func (l *IOLogger) Write(p []byte) (n int, err error) {
4040
if l.writer == nil {
4141
return 0, io.ErrClosedPipe
4242
}
43-
l.logger.Infof("[stdout]: sending %d bytes: %s", len(p), string(p))
43+
l.logger.Info("[stdout]: sending bytes", "count", len(p), "data", string(p))
4444
return l.writer.Write(p)
4545
}

pkg/log/io_test.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import (
55
"strings"
66
"testing"
77

8-
log "github.com/sirupsen/logrus"
8+
"log/slog"
9+
910
"github.com/stretchr/testify/assert"
1011
)
1112

@@ -17,11 +18,7 @@ func TestLoggedReadWriter(t *testing.T) {
1718

1819
// Create logger with buffer to capture output
1920
var logBuffer bytes.Buffer
20-
logger := log.New()
21-
logger.SetOutput(&logBuffer)
22-
logger.SetFormatter(&log.TextFormatter{
23-
DisableTimestamp: true,
24-
})
21+
logger := slog.New(slog.NewTextHandler(&logBuffer, &slog.HandlerOptions{ReplaceAttr: RemoveTimeAttr}))
2522

2623
lrw := NewIOLogger(reader, nil, logger)
2724

@@ -44,11 +41,7 @@ func TestLoggedReadWriter(t *testing.T) {
4441

4542
// Create logger with buffer to capture output
4643
var logBuffer bytes.Buffer
47-
logger := log.New()
48-
logger.SetOutput(&logBuffer)
49-
logger.SetFormatter(&log.TextFormatter{
50-
DisableTimestamp: true,
51-
})
44+
logger := slog.New(slog.NewTextHandler(&logBuffer, &slog.HandlerOptions{ReplaceAttr: RemoveTimeAttr}))
5245

5346
lrw := NewIOLogger(nil, &writeBuffer, logger)
5447

@@ -63,3 +56,10 @@ func TestLoggedReadWriter(t *testing.T) {
6356
assert.Contains(t, logBuffer.String(), outputData)
6457
})
6558
}
59+
60+
func RemoveTimeAttr(groups []string, a slog.Attr) slog.Attr {
61+
if a.Key == slog.TimeKey && len(groups) == 0 {
62+
return slog.Attr{}
63+
}
64+
return a
65+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy