2626using OmniSharp . Extensions . LanguageServer . Server . Pipelines ;
2727using ISerializer = OmniSharp . Extensions . LanguageServer . Protocol . Serialization . ISerializer ;
2828using System . Reactive . Disposables ;
29+ using Microsoft . Extensions . Options ;
30+ using OmniSharp . Extensions . LanguageServer . Server . Logging ;
2931
3032namespace OmniSharp . Extensions . LanguageServer . Server
3133{
@@ -106,8 +108,7 @@ public static ILanguageServer PreInit(LanguageServerOptions options)
106108 options . TextDocumentIdentifierTypes ,
107109 options . InitializeDelegates ,
108110 options . InitializedDelegates ,
109- options . LoggingBuilderAction ,
110- options . AddDefaultLoggingProvider
111+ options . LoggingBuilderAction
111112 ) ;
112113 }
113114
@@ -127,20 +128,12 @@ internal LanguageServer(
127128 IEnumerable < Type > textDocumentIdentifierTypes ,
128129 IEnumerable < InitializeDelegate > initializeDelegates ,
129130 IEnumerable < InitializedDelegate > initializedDelegates ,
130- Action < ILoggingBuilder > loggingBuilderAction ,
131- bool addDefaultLoggingProvider )
131+ Action < ILoggingBuilder > loggingBuilderAction )
132132 {
133133 var outputHandler = new OutputHandler ( output , serializer ) ;
134134
135- services . AddLogging ( builder =>
136- {
137- loggingBuilderAction ( builder ) ;
138-
139- if ( addDefaultLoggingProvider )
140- {
141- builder . AddProvider ( new LanguageServerLoggerProvider ( this ) ) ;
142- }
143- } ) ;
135+ services . AddLogging ( builder => loggingBuilderAction ( builder ) ) ;
136+ services . AddSingleton < IOptionsMonitor < LoggerFilterOptions > , LanguageServerLoggerFilterOptions > ( ) ;
144137
145138 _reciever = reciever ;
146139 _serializer = serializer ;
@@ -248,11 +241,6 @@ internal LanguageServer(
248241 public InitializeParams ClientSettings { get ; private set ; }
249242 public InitializeResult ServerSettings { get ; private set ; }
250243
251- /// <summary>
252- /// The minimum level for the server's default logger.
253- /// </summary>
254- public LogLevel MinimumLogLevel { get ; set ; }
255-
256244 public IServiceProvider Services => _serviceProvider ;
257245
258246 public IDisposable AddHandler ( string method , IJsonRpcHandler handler )
@@ -357,9 +345,22 @@ async Task<InitializeResult> IRequestHandler<InitializeParams, InitializeResult>
357345 {
358346 ClientSettings = request ;
359347
360- if ( request . Trace == InitializeTrace . Verbose && MinimumLogLevel >= LogLevel . Information )
348+ if ( request . Trace == InitializeTrace . Verbose )
361349 {
362- MinimumLogLevel = LogLevel . Trace ;
350+ var loggerSettings = _serviceProvider . GetService < LanguageServerLoggerSettings > ( ) ;
351+
352+ if ( loggerSettings ? . MinimumLogLevel <= LogLevel . Information )
353+ {
354+ loggerSettings . MinimumLogLevel = LogLevel . Trace ;
355+ }
356+
357+ var optionsMonitor = _serviceProvider . GetService < IOptionsMonitor < LoggerFilterOptions > > ( ) as LanguageServerLoggerFilterOptions ;
358+
359+ if ( optionsMonitor ? . CurrentValue . MinLevel <= LogLevel . Information )
360+ {
361+ optionsMonitor . CurrentValue . MinLevel = LogLevel . Trace ;
362+ optionsMonitor . Set ( optionsMonitor . CurrentValue ) ;
363+ }
363364 }
364365
365366 _clientVersion = request . Capabilities ? . GetClientVersion ( ) ?? ClientVersion . Lsp2 ;
0 commit comments