26
26
using OmniSharp . Extensions . LanguageServer . Server . Pipelines ;
27
27
using ISerializer = OmniSharp . Extensions . LanguageServer . Protocol . Serialization . ISerializer ;
28
28
using System . Reactive . Disposables ;
29
+ using Microsoft . Extensions . Options ;
30
+ using OmniSharp . Extensions . LanguageServer . Server . Logging ;
29
31
30
32
namespace OmniSharp . Extensions . LanguageServer . Server
31
33
{
@@ -106,8 +108,7 @@ public static ILanguageServer PreInit(LanguageServerOptions options)
106
108
options . TextDocumentIdentifierTypes ,
107
109
options . InitializeDelegates ,
108
110
options . InitializedDelegates ,
109
- options . LoggingBuilderAction ,
110
- options . AddDefaultLoggingProvider
111
+ options . LoggingBuilderAction
111
112
) ;
112
113
}
113
114
@@ -127,20 +128,12 @@ internal LanguageServer(
127
128
IEnumerable < Type > textDocumentIdentifierTypes ,
128
129
IEnumerable < InitializeDelegate > initializeDelegates ,
129
130
IEnumerable < InitializedDelegate > initializedDelegates ,
130
- Action < ILoggingBuilder > loggingBuilderAction ,
131
- bool addDefaultLoggingProvider )
131
+ Action < ILoggingBuilder > loggingBuilderAction )
132
132
{
133
133
var outputHandler = new OutputHandler ( output , serializer ) ;
134
134
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 > ( ) ;
144
137
145
138
_reciever = reciever ;
146
139
_serializer = serializer ;
@@ -248,11 +241,6 @@ internal LanguageServer(
248
241
public InitializeParams ClientSettings { get ; private set ; }
249
242
public InitializeResult ServerSettings { get ; private set ; }
250
243
251
- /// <summary>
252
- /// The minimum level for the server's default logger.
253
- /// </summary>
254
- public LogLevel MinimumLogLevel { get ; set ; }
255
-
256
244
public IServiceProvider Services => _serviceProvider ;
257
245
258
246
public IDisposable AddHandler ( string method , IJsonRpcHandler handler )
@@ -357,9 +345,22 @@ async Task<InitializeResult> IRequestHandler<InitializeParams, InitializeResult>
357
345
{
358
346
ClientSettings = request ;
359
347
360
- if ( request . Trace == InitializeTrace . Verbose && MinimumLogLevel >= LogLevel . Information )
348
+ if ( request . Trace == InitializeTrace . Verbose )
361
349
{
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
+ }
363
364
}
364
365
365
366
_clientVersion = request . Capabilities ? . GetClientVersion ( ) ?? ClientVersion . Lsp2 ;
0 commit comments