/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Logging/LspLoggerFactory.cs
46 строк
2 KB
David Barbet
Refactor LSP server logging to remove singleton lsp instance (#84001)
16 июн 2026, 05:04
Не верифицирован
16 июн 2026, 05:04
82e81e5
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Composition; using Microsoft.CodeAnalysis.LanguageServer.Handler; using Microsoft.CodeAnalysis.Host.Mef; using Microsoft.Extensions.Logging; namespace Microsoft.CodeAnalysis.LanguageServer.Logging; [ExportCSharpVisualBasicLspServiceFactory(typeof(LspLoggerFactory)), Shared] [method: ImportingConstructor] [method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] internal sealed class LspLoggerFactoryFactory(ServerConfiguration serverConfiguration) : ILspServiceFactory { public ILspService CreateILspService(LspServices lspServices, WellKnownLspServerKinds serverKind) => new LspLoggerFactory(lspServices.GetRequiredService<IClientLanguageServerManager>(), serverConfiguration); } internal sealed class LspLoggerFactory : ILoggerFactory, ILspService { private readonly ILoggerFactory _loggerFactory; private readonly LogConfiguration _logConfiguration; public LspLoggerFactory(IClientLanguageServerManager clientLanguageServerManager, ServerConfiguration serverConfiguration) { _logConfiguration = new(serverConfiguration.InitialLogLevel); _loggerFactory = LoggerFactory.Create(builder => { builder.SetMinimumLevel(LogLevel.Trace); builder.AddProvider(new LspLogMessageLoggerProvider(clientLanguageServerManager, _logConfiguration)); }); } public LogConfiguration LogConfiguration => _logConfiguration; public void AddProvider(ILoggerProvider provider) => _loggerFactory.AddProvider(provider); public ILogger CreateLogger(string categoryName) => _loggerFactory.CreateLogger(categoryName); public void Dispose() => _loggerFactory.Dispose(); }