| 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}) |
| } |