Skip to content

Commit cfc8416

Browse files
Stop importing ILoggerFactory lazily (#10339)
Awhile back, a few MEF components were changed to import ILoggerFactory lazily in order to avoid extra image loads for MS.Ext.Logging. However, that shouldn't be an issue anymore for two reasons: 1. We don't rely on that logging implementation anymore. 2. Our logging implementation is already lazy and does not force MEF components to be created until the first time a message is logged.
2 parents 2b804a2 + 5fa181a commit cfc8416

File tree

4 files changed

+14
-35
lines changed

4 files changed

+14
-35
lines changed

src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/DefaultLSPBreakpointSpanProvider.cs

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,15 @@ namespace Microsoft.VisualStudio.Razor.LanguageClient.Debugging;
1919
internal class DefaultLSPBreakpointSpanProvider : LSPBreakpointSpanProvider
2020
{
2121
private readonly LSPRequestInvoker _requestInvoker;
22-
private readonly Lazy<ILogger> _logger;
22+
private readonly ILogger _logger;
2323

2424
[ImportingConstructor]
2525
public DefaultLSPBreakpointSpanProvider(
2626
LSPRequestInvoker requestInvoker,
27-
Lazy<ILoggerFactory> loggerFactory)
27+
ILoggerFactory loggerFactory)
2828
{
29-
if (requestInvoker is null)
30-
{
31-
throw new ArgumentNullException(nameof(requestInvoker));
32-
}
33-
34-
if (loggerFactory is null)
35-
{
36-
throw new ArgumentNullException(nameof(loggerFactory));
37-
}
38-
3929
_requestInvoker = requestInvoker;
40-
_logger = new Lazy<ILogger>(() => loggerFactory.Value.GetOrCreateLogger<DefaultLSPBreakpointSpanProvider>());
30+
_logger = loggerFactory.GetOrCreateLogger<DefaultLSPBreakpointSpanProvider>();
4131
}
4232

4333
public async override Task<Range?> GetBreakpointSpanAsync(LSPDocumentSnapshot documentSnapshot, Position position, CancellationToken cancellationToken)
@@ -69,7 +59,7 @@ public DefaultLSPBreakpointSpanProvider(
6959
var languageResponse = response?.Response;
7060
if (languageResponse is null)
7161
{
72-
_logger.Value.LogInformation($"The breakpoint position could not be mapped to a valid range.");
62+
_logger.LogInformation($"The breakpoint position could not be mapped to a valid range.");
7363
return null;
7464
}
7565

src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/DefaultLSPProximityExpressionsProvider.cs

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,25 +21,15 @@ internal class DefaultLSPProximityExpressionsProvider : LSPProximityExpressionsP
2121
{
2222
private readonly LSPRequestInvoker _requestInvoker;
2323

24-
private readonly Lazy<ILogger> _logger;
24+
private readonly ILogger _logger;
2525

2626
[ImportingConstructor]
2727
public DefaultLSPProximityExpressionsProvider(
2828
LSPRequestInvoker requestInvoker,
29-
Lazy<ILoggerFactory> loggerFactory)
29+
ILoggerFactory loggerFactory)
3030
{
31-
if (requestInvoker is null)
32-
{
33-
throw new ArgumentNullException(nameof(requestInvoker));
34-
}
35-
36-
if (loggerFactory is null)
37-
{
38-
throw new ArgumentNullException(nameof(loggerFactory));
39-
}
40-
4131
_requestInvoker = requestInvoker;
42-
_logger = new Lazy<ILogger>(() => loggerFactory.Value.GetOrCreateLogger<DefaultLSPProximityExpressionsProvider>());
32+
_logger = loggerFactory.GetOrCreateLogger<DefaultLSPProximityExpressionsProvider>();
4333
}
4434

4535
public async override Task<IReadOnlyList<string>?> GetProximityExpressionsAsync(LSPDocumentSnapshot documentSnapshot, Position position, CancellationToken cancellationToken)
@@ -71,7 +61,7 @@ public DefaultLSPProximityExpressionsProvider(
7161
var languageResponse = response?.Response;
7262
if (languageResponse is null)
7363
{
74-
_logger.Value.LogInformation($"The proximity expressions could not be resolved.");
64+
_logger.LogInformation($"The proximity expressions could not be resolved.");
7565
return null;
7666
}
7767

src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Telemetry/VSTelemetryReporter.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,16 @@ namespace Microsoft.VisualStudio.Razor.Telemetry;
1414
[Export(typeof(ITelemetryReporter))]
1515
internal class VSTelemetryReporter : TelemetryReporter
1616
{
17-
private readonly Lazy<ILogger?> _logger;
17+
private readonly ILogger _logger;
1818

1919
[ImportingConstructor]
20-
public VSTelemetryReporter(Lazy<ILoggerFactory> loggerFactory)
20+
public VSTelemetryReporter(ILoggerFactory loggerFactory)
2121
// Get the DefaultSession for telemetry. This is set by VS with
2222
// TelemetryService.SetDefaultSession and provides the correct
2323
// appinsights keys etc
2424
: base(ImmutableArray.Create(TelemetryService.DefaultSession))
2525
{
26-
_logger = new Lazy<ILogger?>(() => loggerFactory.Value.GetOrCreateLogger<VSTelemetryReporter>());
26+
_logger = loggerFactory.GetOrCreateLogger<VSTelemetryReporter>();
2727
}
2828

2929
protected override bool HandleException(Exception exception, string? message, params object?[] @params)
@@ -65,8 +65,8 @@ private bool ReportRemoteInvocationException(RemoteInvocationException remoteInv
6565
}
6666

6767
protected override void LogTrace(string message)
68-
=> _logger.Value?.Log(LogLevel.Trace, message, exception: null);
68+
=> _logger.Log(LogLevel.Trace, message, exception: null);
6969

7070
protected override void LogError(Exception exception, string message)
71-
=> _logger.Value?.Log(LogLevel.Error, message, exception);
71+
=> _logger.Log(LogLevel.Error, message, exception);
7272
}

src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Editor_NetFx/TestTelemetryReporter.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the MIT license. See License.txt in the project root for license information.
33

4-
using System;
54
using System.Collections.Generic;
65
using Microsoft.CodeAnalysis.Razor.Logging;
76
using Microsoft.VisualStudio.Razor.Telemetry;
87
using Microsoft.VisualStudio.Telemetry;
98

109
namespace Microsoft.VisualStudio.Editor.Razor.Test.Shared;
1110

12-
internal class TestTelemetryReporter(ILoggerFactory loggerFactory) : VSTelemetryReporter(new Lazy<ILoggerFactory>(() => loggerFactory))
11+
internal class TestTelemetryReporter(ILoggerFactory loggerFactory) : VSTelemetryReporter(loggerFactory)
1312
{
1413
public List<TelemetryEvent> Events { get; } = [];
1514

0 commit comments

Comments
 (0)