mirror of
https://github.com/golang/go
synced 2024-11-19 03:24:40 -07:00
33 lines
761 B
Go
33 lines
761 B
Go
|
package protocol
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"golang.org/x/tools/internal/lsp/xlog"
|
||
|
)
|
||
|
|
||
|
// logSink implements xlog.Sink in terms of the LogMessage call to a client.
|
||
|
type logSink struct {
|
||
|
client Client
|
||
|
}
|
||
|
|
||
|
// NewLogger returns an xlog.Sink that sends its messages using client.LogMessage.
|
||
|
// It maps Debug to the Log level, Info and Error to their matching levels, and
|
||
|
// does not support warnings.
|
||
|
func NewLogger(client Client) xlog.Sink {
|
||
|
return logSink{client: client}
|
||
|
}
|
||
|
|
||
|
func (s logSink) Log(ctx context.Context, level xlog.Level, message string) {
|
||
|
typ := Log
|
||
|
switch level {
|
||
|
case xlog.ErrorLevel:
|
||
|
typ = Error
|
||
|
case xlog.InfoLevel:
|
||
|
typ = Info
|
||
|
case xlog.DebugLevel:
|
||
|
typ = Log
|
||
|
}
|
||
|
s.client.LogMessage(ctx, &LogMessageParams{Type: typ, Message: message})
|
||
|
}
|