Skip to content

Commit

Permalink
Add ability to set custom logger
Browse files Browse the repository at this point in the history
Before this commit, a custom logger could be set with the LogMessages
function. However, by using LogMessages not only is a custom logger
set but allso all received and sent messages are logged. Use cases exist
where a custom logger is desired to log error but not all messages.
  • Loading branch information
samherrmann committed Jun 19, 2021
1 parent 99f63e0 commit b3b263a
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
7 changes: 7 additions & 0 deletions conn_opt.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,10 @@ func LogMessages(logger Logger) ConnOpt {
})(c)
}
}

// SetLogger sets the logger for the connection.
func SetLogger(logger Logger) ConnOpt {
return func(c *Conn) {
c.logger = logger
}
}
53 changes: 53 additions & 0 deletions conn_opt_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package jsonrpc2_test

import (
"bufio"
"context"
"io"
"log"
"net"
"testing"

"github.com/sourcegraph/jsonrpc2"
)

func TestSetLogger(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()

rd, wr := io.Pipe()
defer rd.Close()
defer wr.Close()

buf := bufio.NewReader(rd)
logger := log.New(wr, "", log.Lmsgprefix)

a, b := net.Pipe()
connA := jsonrpc2.NewConn(
ctx,
jsonrpc2.NewBufferedStream(a, jsonrpc2.VSCodeObjectCodec{}),
noopHandler{},
jsonrpc2.SetLogger(logger),
)
connB := jsonrpc2.NewConn(
ctx,
jsonrpc2.NewBufferedStream(b, jsonrpc2.VSCodeObjectCodec{}),
noopHandler{},
)
defer connA.Close()
defer connB.Close()

// Write a response with no corresponding request.
if err := connB.Reply(ctx, jsonrpc2.ID{Num: 0}, nil); err != nil {
t.Fatal(err)
}

want := "jsonrpc2: ignoring response #0 with no corresponding request\n"
got, err := buf.ReadString('\n')
if err != nil {
t.Fatal(err)
}
if got != want {
t.Fatalf("got %q, want %q", got, want)
}
}

0 comments on commit b3b263a

Please sign in to comment.