@@ -8,7 +8,14 @@ import * as path from 'path';
8
8
import * as cp from 'child_process' ;
9
9
import * as uuid from 'uuid' ;
10
10
import * as net from 'net' ;
11
- import { LanguageClientOptions , MessageTransports , ProtocolRequestType , ServerOptions } from 'vscode-languageclient' ;
11
+ import {
12
+ LanguageClientOptions ,
13
+ LogMessageParams ,
14
+ MessageTransports ,
15
+ NotificationType ,
16
+ ProtocolRequestType ,
17
+ ServerOptions ,
18
+ } from 'vscode-languageclient' ;
12
19
import {
13
20
Trace ,
14
21
RequestType ,
@@ -71,6 +78,7 @@ import {
71
78
copilotLanguageServerExtensionAssemblyName ,
72
79
copilotLanguageServerExtensionComponentName ,
73
80
} from '../copilot/contextProviders' ;
81
+ import { RazorLogger } from '../../razor/src/razorLogger' ;
74
82
75
83
// Flag indicating if C# Devkit was installed the last time we activated.
76
84
// Used to determine if we need to restart the server on extension changes.
@@ -80,6 +88,7 @@ export class RoslynLanguageServer {
80
88
// These are notifications we will get from the LSP server and will forward to the Razor extension.
81
89
private static readonly provideRazorDynamicFileInfoMethodName : string = 'razor/provideDynamicFileInfo' ;
82
90
private static readonly removeRazorDynamicFileInfoMethodName : string = 'razor/removeDynamicFileInfo' ;
91
+ private static readonly razorLogMessageMethodName : string = 'razor/log' ;
83
92
84
93
/**
85
94
* The encoding to use when writing to and from the stream.
@@ -119,7 +128,8 @@ export class RoslynLanguageServer {
119
128
private _context : vscode . ExtensionContext ,
120
129
private _telemetryReporter : TelemetryReporter ,
121
130
private _languageServerEvents : RoslynLanguageServerEvents ,
122
- private _channel : vscode . LogOutputChannel
131
+ private _channel : vscode . LogOutputChannel ,
132
+ logger : RazorLogger
123
133
) {
124
134
this . registerSetTrace ( ) ;
125
135
this . registerSendOpenSolution ( ) ;
@@ -138,6 +148,7 @@ export class RoslynLanguageServer {
138
148
139
149
// Register Razor dynamic file info handling
140
150
this . registerDynamicFileInfo ( ) ;
151
+ this . registerRazorLogger ( logger ) ;
141
152
142
153
this . registerDebuggerAttach ( ) ;
143
154
@@ -253,7 +264,8 @@ export class RoslynLanguageServer {
253
264
additionalExtensionPaths : string [ ] ,
254
265
languageServerEvents : RoslynLanguageServerEvents ,
255
266
channel : vscode . LogOutputChannel ,
256
- traceChannel : vscode . OutputChannel
267
+ traceChannel : vscode . OutputChannel ,
268
+ razorlogger : RazorLogger
257
269
) : Promise < RoslynLanguageServer > {
258
270
const devKit = getCSharpDevKit ( ) ;
259
271
if ( devKit ) {
@@ -316,7 +328,8 @@ export class RoslynLanguageServer {
316
328
context ,
317
329
telemetryReporter ,
318
330
languageServerEvents ,
319
- channel
331
+ channel ,
332
+ razorlogger
320
333
) ;
321
334
322
335
client . registerFeature ( server . _onAutoInsertFeature ) ;
@@ -832,6 +845,19 @@ export class RoslynLanguageServer {
832
845
) ;
833
846
}
834
847
848
+ private RazorLoggerNotification : NotificationType < LogMessageParams > = new NotificationType (
849
+ RoslynLanguageServer . razorLogMessageMethodName
850
+ ) ;
851
+
852
+ private registerRazorLogger ( logger : RazorLogger ) {
853
+ this . _languageClient . onNotification < LogMessageParams > (
854
+ this . RazorLoggerNotification ,
855
+ ( params : LogMessageParams ) => {
856
+ logger . log ( params . message , params . type ) ;
857
+ }
858
+ ) ;
859
+ }
860
+
835
861
// eslint-disable-next-line @typescript-eslint/promise-function-async
836
862
private WaitForAttachCompleteAsync ( attachRequestId : string ) : Promise < boolean > {
837
863
return new Promise < boolean > ( ( resolve ) => {
0 commit comments