@@ -8,7 +8,14 @@ import * as path from 'path';
88import * as cp from 'child_process' ;
99import * as uuid from 'uuid' ;
1010import * 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' ;
1219import {
1320 Trace ,
1421 RequestType ,
@@ -71,6 +78,7 @@ import {
7178 copilotLanguageServerExtensionAssemblyName ,
7279 copilotLanguageServerExtensionComponentName ,
7380} from '../copilot/contextProviders' ;
81+ import { RazorLogger } from '../../razor/src/razorLogger' ;
7482
7583// Flag indicating if C# Devkit was installed the last time we activated.
7684// Used to determine if we need to restart the server on extension changes.
@@ -80,6 +88,7 @@ export class RoslynLanguageServer {
8088 // These are notifications we will get from the LSP server and will forward to the Razor extension.
8189 private static readonly provideRazorDynamicFileInfoMethodName : string = 'razor/provideDynamicFileInfo' ;
8290 private static readonly removeRazorDynamicFileInfoMethodName : string = 'razor/removeDynamicFileInfo' ;
91+ private static readonly razorLogMessageMethodName : string = 'razor/log' ;
8392
8493 /**
8594 * The encoding to use when writing to and from the stream.
@@ -119,7 +128,8 @@ export class RoslynLanguageServer {
119128 private _context : vscode . ExtensionContext ,
120129 private _telemetryReporter : TelemetryReporter ,
121130 private _languageServerEvents : RoslynLanguageServerEvents ,
122- private _channel : vscode . LogOutputChannel
131+ private _channel : vscode . LogOutputChannel ,
132+ logger : RazorLogger
123133 ) {
124134 this . registerSetTrace ( ) ;
125135 this . registerSendOpenSolution ( ) ;
@@ -138,6 +148,7 @@ export class RoslynLanguageServer {
138148
139149 // Register Razor dynamic file info handling
140150 this . registerDynamicFileInfo ( ) ;
151+ this . registerRazorLogger ( logger ) ;
141152
142153 this . registerDebuggerAttach ( ) ;
143154
@@ -253,7 +264,8 @@ export class RoslynLanguageServer {
253264 additionalExtensionPaths : string [ ] ,
254265 languageServerEvents : RoslynLanguageServerEvents ,
255266 channel : vscode . LogOutputChannel ,
256- traceChannel : vscode . OutputChannel
267+ traceChannel : vscode . OutputChannel ,
268+ razorlogger : RazorLogger
257269 ) : Promise < RoslynLanguageServer > {
258270 const devKit = getCSharpDevKit ( ) ;
259271 if ( devKit ) {
@@ -316,7 +328,8 @@ export class RoslynLanguageServer {
316328 context ,
317329 telemetryReporter ,
318330 languageServerEvents ,
319- channel
331+ channel ,
332+ razorlogger
320333 ) ;
321334
322335 client . registerFeature ( server . _onAutoInsertFeature ) ;
@@ -832,6 +845,19 @@ export class RoslynLanguageServer {
832845 ) ;
833846 }
834847
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+
835861 // eslint-disable-next-line @typescript-eslint/promise-function-async
836862 private WaitForAttachCompleteAsync ( attachRequestId : string ) : Promise < boolean > {
837863 return new Promise < boolean > ( ( resolve ) => {
0 commit comments