Skip to content

Commit 5d6e21e

Browse files
committed
Revert "Convert HealthChecks logging to use new Logging Source Generator (#32414)"
This reverts commit 1dd00f4.
1 parent ce1c062 commit 5d6e21e

4 files changed

+156
-136
lines changed

src/HealthChecks/HealthChecks/src/DefaultHealthCheckService.cs

+61-44
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
namespace Microsoft.Extensions.Diagnostics.HealthChecks
1717
{
18-
internal partial class DefaultHealthCheckService : HealthCheckService
18+
internal class DefaultHealthCheckService : HealthCheckService
1919
{
2020
private readonly IServiceScopeFactory _scopeFactory;
2121
private readonly IOptions<HealthCheckServiceOptions> _options;
@@ -87,7 +87,7 @@ private async Task<HealthReportEntry> RunCheckAsync(HealthCheckRegistration regi
8787
var stopwatch = ValueStopwatch.StartNew();
8888
var context = new HealthCheckContext { Registration = registration };
8989

90-
Log.HealthCheckBegin(_logger, registration.Name);
90+
Log.HealthCheckBegin(_logger, registration);
9191

9292
HealthReportEntry entry;
9393
CancellationTokenSource? timeoutCancellationTokenSource = null;
@@ -182,75 +182,92 @@ private static void ValidateRegistrations(IEnumerable<HealthCheckRegistration> r
182182

183183
internal static class EventIds
184184
{
185-
public const int HealthCheckProcessingBeginId = 100;
186-
public const int HealthCheckProcessingEndId = 101;
187-
public const int HealthCheckBeginId = 102;
188-
public const int HealthCheckEndId = 103;
189-
public const int HealthCheckErrorId = 104;
190-
public const int HealthCheckDataId = 105;
191-
192-
// Hard code the event names to avoid breaking changes. Even if the methods are renamed, these hard-coded names shouldn't change.
193-
public const string HealthCheckProcessingBeginName = "HealthCheckProcessingBegin";
194-
public const string HealthCheckProcessingEndName = "HealthCheckProcessingEnd";
195-
public const string HealthCheckBeginName = "HealthCheckBegin";
196-
public const string HealthCheckEndName = "HealthCheckEnd";
197-
public const string HealthCheckErrorName = "HealthCheckError";
198-
public const string HealthCheckDataName = "HealthCheckData";
199-
200-
public static readonly EventId HealthCheckData = new EventId(HealthCheckDataId, HealthCheckDataName);
185+
public static readonly EventId HealthCheckProcessingBegin = new EventId(100, "HealthCheckProcessingBegin");
186+
public static readonly EventId HealthCheckProcessingEnd = new EventId(101, "HealthCheckProcessingEnd");
187+
188+
public static readonly EventId HealthCheckBegin = new EventId(102, "HealthCheckBegin");
189+
public static readonly EventId HealthCheckEnd = new EventId(103, "HealthCheckEnd");
190+
public static readonly EventId HealthCheckError = new EventId(104, "HealthCheckError");
191+
public static readonly EventId HealthCheckData = new EventId(105, "HealthCheckData");
201192
}
202193

203-
private static partial class Log
194+
private static class Log
204195
{
205-
[LoggerMessage(EventIds.HealthCheckProcessingBeginId, LogLevel.Debug, "Running health checks", EventName = EventIds.HealthCheckProcessingBeginName)]
206-
public static partial void HealthCheckProcessingBegin(ILogger logger);
207-
208-
public static void HealthCheckProcessingEnd(ILogger logger, HealthStatus status, TimeSpan duration) =>
209-
HealthCheckProcessingEnd(logger, status, duration.TotalMilliseconds);
196+
private static readonly Action<ILogger, Exception?> _healthCheckProcessingBegin = LoggerMessage.Define(
197+
LogLevel.Debug,
198+
EventIds.HealthCheckProcessingBegin,
199+
"Running health checks");
210200

211-
[LoggerMessage(EventIds.HealthCheckProcessingEndId, LogLevel.Debug, "Health check processing with combined status {HealthStatus} completed after {ElapsedMilliseconds}ms", EventName = EventIds.HealthCheckProcessingEndName)]
212-
private static partial void HealthCheckProcessingEnd(ILogger logger, HealthStatus HealthStatus, double ElapsedMilliseconds);
201+
private static readonly Action<ILogger, double, HealthStatus, Exception?> _healthCheckProcessingEnd = LoggerMessage.Define<double, HealthStatus>(
202+
LogLevel.Debug,
203+
EventIds.HealthCheckProcessingEnd,
204+
"Health check processing with combined status {HealthStatus} completed after {ElapsedMilliseconds}ms");
213205

214-
[LoggerMessage(EventIds.HealthCheckBeginId, LogLevel.Debug, "Running health check {HealthCheckName}", EventName = EventIds.HealthCheckBeginName)]
215-
public static partial void HealthCheckBegin(ILogger logger, string HealthCheckName);
206+
private static readonly Action<ILogger, string, Exception?> _healthCheckBegin = LoggerMessage.Define<string>(
207+
LogLevel.Debug,
208+
EventIds.HealthCheckBegin,
209+
"Running health check {HealthCheckName}");
216210

217211
// These are separate so they can have different log levels
218212
private const string HealthCheckEndText = "Health check {HealthCheckName} with status {HealthStatus} completed after {ElapsedMilliseconds}ms with message '{HealthCheckDescription}'";
219213

220-
#pragma warning disable SYSLIB1006
221-
[LoggerMessage(EventIds.HealthCheckEndId, LogLevel.Debug, HealthCheckEndText, EventName = EventIds.HealthCheckEndName)]
222-
private static partial void HealthCheckEndHealthy(ILogger logger, string HealthCheckName, HealthStatus HealthStatus, double ElapsedMilliseconds, string? HealthCheckDescription);
214+
private static readonly Action<ILogger, string, double, HealthStatus, string?, Exception?> _healthCheckEndHealthy = LoggerMessage.Define<string, double, HealthStatus, string?>(
215+
LogLevel.Debug,
216+
EventIds.HealthCheckEnd,
217+
HealthCheckEndText);
218+
219+
private static readonly Action<ILogger, string, double, HealthStatus, string?, Exception?> _healthCheckEndDegraded = LoggerMessage.Define<string, double, HealthStatus, string?>(
220+
LogLevel.Warning,
221+
EventIds.HealthCheckEnd,
222+
HealthCheckEndText);
223+
224+
private static readonly Action<ILogger, string, double, HealthStatus, string?, Exception?> _healthCheckEndUnhealthy = LoggerMessage.Define<string, double, HealthStatus, string?>(
225+
LogLevel.Error,
226+
EventIds.HealthCheckEnd,
227+
HealthCheckEndText);
223228

224-
[LoggerMessage(EventIds.HealthCheckEndId, LogLevel.Warning, HealthCheckEndText, EventName = EventIds.HealthCheckEndName)]
225-
private static partial void HealthCheckEndDegraded(ILogger logger, string HealthCheckName, HealthStatus HealthStatus, double ElapsedMilliseconds, string? HealthCheckDescription);
229+
private static readonly Action<ILogger, string, double, Exception?> _healthCheckError = LoggerMessage.Define<string, double>(
230+
LogLevel.Error,
231+
EventIds.HealthCheckError,
232+
"Health check {HealthCheckName} threw an unhandled exception after {ElapsedMilliseconds}ms");
226233

227-
[LoggerMessage(EventIds.HealthCheckEndId, LogLevel.Error, HealthCheckEndText, EventName = EventIds.HealthCheckEndName)]
228-
private static partial void HealthCheckEndUnhealthy(ILogger logger, string HealthCheckName, HealthStatus HealthStatus, double ElapsedMilliseconds, string? HealthCheckDescription, Exception? exception);
229-
#pragma warning restore SYSLIB1006
234+
public static void HealthCheckProcessingBegin(ILogger logger)
235+
{
236+
_healthCheckProcessingBegin(logger, null);
237+
}
238+
239+
public static void HealthCheckProcessingEnd(ILogger logger, HealthStatus status, TimeSpan duration)
240+
{
241+
_healthCheckProcessingEnd(logger, duration.TotalMilliseconds, status, null);
242+
}
243+
244+
public static void HealthCheckBegin(ILogger logger, HealthCheckRegistration registration)
245+
{
246+
_healthCheckBegin(logger, registration.Name, null);
247+
}
230248

231249
public static void HealthCheckEnd(ILogger logger, HealthCheckRegistration registration, HealthReportEntry entry, TimeSpan duration)
232250
{
233251
switch (entry.Status)
234252
{
235253
case HealthStatus.Healthy:
236-
HealthCheckEndHealthy(logger, registration.Name, entry.Status, duration.TotalMilliseconds, entry.Description);
254+
_healthCheckEndHealthy(logger, registration.Name, duration.TotalMilliseconds, entry.Status, entry.Description, null);
237255
break;
238256

239257
case HealthStatus.Degraded:
240-
HealthCheckEndDegraded(logger, registration.Name, entry.Status, duration.TotalMilliseconds, entry.Description);
258+
_healthCheckEndDegraded(logger, registration.Name, duration.TotalMilliseconds, entry.Status, entry.Description, null);
241259
break;
242260

243261
case HealthStatus.Unhealthy:
244-
HealthCheckEndUnhealthy(logger, registration.Name, entry.Status, duration.TotalMilliseconds, entry.Description, entry.Exception);
262+
_healthCheckEndUnhealthy(logger, registration.Name, duration.TotalMilliseconds, entry.Status, entry.Description, entry.Exception);
245263
break;
246264
}
247265
}
248266

249-
[LoggerMessage(EventIds.HealthCheckErrorId, LogLevel.Error, "Health check {HealthCheckName} threw an unhandled exception after {ElapsedMilliseconds}ms", EventName = EventIds.HealthCheckErrorName)]
250-
private static partial void HealthCheckError(ILogger logger, string HealthCheckName, double ElapsedMilliseconds, Exception exception);
251-
252-
public static void HealthCheckError(ILogger logger, HealthCheckRegistration registration, Exception exception, TimeSpan duration) =>
253-
HealthCheckError(logger, registration.Name, duration.TotalMilliseconds, exception);
267+
public static void HealthCheckError(ILogger logger, HealthCheckRegistration registration, Exception exception, TimeSpan duration)
268+
{
269+
_healthCheckError(logger, registration.Name, duration.TotalMilliseconds, exception);
270+
}
254271

255272
public static void HealthCheckData(ILogger logger, HealthCheckRegistration registration, HealthReportEntry entry)
256273
{

src/HealthChecks/HealthChecks/src/HealthCheckPublisherHostedService.cs

+65-43
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313

1414
namespace Microsoft.Extensions.Diagnostics.HealthChecks
1515
{
16-
internal sealed partial class HealthCheckPublisherHostedService : IHostedService
16+
internal sealed class HealthCheckPublisherHostedService : IHostedService
1717
{
1818
private readonly HealthCheckService _healthCheckService;
1919
private readonly IOptions<HealthCheckPublisherOptions> _options;
2020
private readonly ILogger _logger;
2121
private readonly IHealthCheckPublisher[] _publishers;
2222

23-
private readonly CancellationTokenSource _stopping;
23+
private CancellationTokenSource _stopping;
2424
private Timer? _timer;
2525
private CancellationTokenSource? _runTokenSource;
2626

@@ -194,55 +194,77 @@ private async Task RunPublisherAsync(IHealthCheckPublisher publisher, HealthRepo
194194

195195
internal static class EventIds
196196
{
197-
public const int HealthCheckPublisherProcessingBeginId = 100;
198-
public const int HealthCheckPublisherProcessingEndId = 101;
199-
public const int HealthCheckPublisherBeginId = 102;
200-
public const int HealthCheckPublisherEndId = 103;
201-
public const int HealthCheckPublisherErrorId = 104;
202-
public const int HealthCheckPublisherTimeoutId = 104;
203-
204-
// Hard code the event names to avoid breaking changes. Even if the methods are renamed, these hard-coded names shouldn't change.
205-
public const string HealthCheckPublisherProcessingBeginName = "HealthCheckPublisherProcessingBegin";
206-
public const string HealthCheckPublisherProcessingEndName = "HealthCheckPublisherProcessingEnd";
207-
public const string HealthCheckPublisherBeginName = "HealthCheckPublisherBegin";
208-
public const string HealthCheckPublisherEndName = "HealthCheckPublisherEnd";
209-
public const string HealthCheckPublisherErrorName = "HealthCheckPublisherError";
210-
public const string HealthCheckPublisherTimeoutName = "HealthCheckPublisherTimeout";
197+
public static readonly EventId HealthCheckPublisherProcessingBegin = new EventId(100, "HealthCheckPublisherProcessingBegin");
198+
public static readonly EventId HealthCheckPublisherProcessingEnd = new EventId(101, "HealthCheckPublisherProcessingEnd");
199+
public static readonly EventId HealthCheckPublisherProcessingError = new EventId(101, "HealthCheckPublisherProcessingError");
200+
201+
public static readonly EventId HealthCheckPublisherBegin = new EventId(102, "HealthCheckPublisherBegin");
202+
public static readonly EventId HealthCheckPublisherEnd = new EventId(103, "HealthCheckPublisherEnd");
203+
public static readonly EventId HealthCheckPublisherError = new EventId(104, "HealthCheckPublisherError");
204+
public static readonly EventId HealthCheckPublisherTimeout = new EventId(104, "HealthCheckPublisherTimeout");
211205
}
212206

213-
private static partial class Logger
207+
private static class Logger
214208
{
215-
[LoggerMessage(EventIds.HealthCheckPublisherProcessingBeginId, LogLevel.Debug, "Running health check publishers", EventName = EventIds.HealthCheckPublisherProcessingBeginName)]
216-
public static partial void HealthCheckPublisherProcessingBegin(ILogger logger);
217-
218-
public static void HealthCheckPublisherProcessingEnd(ILogger logger, TimeSpan duration, Exception? exception = null) =>
219-
HealthCheckPublisherProcessingEnd(logger, duration.TotalMilliseconds, exception);
220-
221-
[LoggerMessage(EventIds.HealthCheckPublisherProcessingEndId, LogLevel.Debug, "Health check publisher processing completed after {ElapsedMilliseconds}ms", EventName = EventIds.HealthCheckPublisherProcessingEndName)]
222-
private static partial void HealthCheckPublisherProcessingEnd(ILogger logger, double ElapsedMilliseconds, Exception? exception = null);
223-
224-
[LoggerMessage(EventIds.HealthCheckPublisherBeginId, LogLevel.Debug, "Running health check publisher '{HealthCheckPublisher}'", EventName = EventIds.HealthCheckPublisherBeginName)]
225-
public static partial void HealthCheckPublisherBegin(ILogger logger, IHealthCheckPublisher HealthCheckPublisher);
226-
227-
public static void HealthCheckPublisherEnd(ILogger logger, IHealthCheckPublisher HealthCheckPublisher, TimeSpan duration) =>
228-
HealthCheckPublisherEnd(logger, HealthCheckPublisher, duration.TotalMilliseconds);
209+
private static readonly Action<ILogger, Exception?> _healthCheckPublisherProcessingBegin = LoggerMessage.Define(
210+
LogLevel.Debug,
211+
EventIds.HealthCheckPublisherProcessingBegin,
212+
"Running health check publishers");
213+
214+
private static readonly Action<ILogger, double, Exception?> _healthCheckPublisherProcessingEnd = LoggerMessage.Define<double>(
215+
LogLevel.Debug,
216+
EventIds.HealthCheckPublisherProcessingEnd,
217+
"Health check publisher processing completed after {ElapsedMilliseconds}ms");
218+
219+
private static readonly Action<ILogger, IHealthCheckPublisher, Exception?> _healthCheckPublisherBegin = LoggerMessage.Define<IHealthCheckPublisher>(
220+
LogLevel.Debug,
221+
EventIds.HealthCheckPublisherBegin,
222+
"Running health check publisher '{HealthCheckPublisher}'");
223+
224+
private static readonly Action<ILogger, IHealthCheckPublisher, double, Exception?> _healthCheckPublisherEnd = LoggerMessage.Define<IHealthCheckPublisher, double>(
225+
LogLevel.Debug,
226+
EventIds.HealthCheckPublisherEnd,
227+
"Health check '{HealthCheckPublisher}' completed after {ElapsedMilliseconds}ms");
228+
229+
private static readonly Action<ILogger, IHealthCheckPublisher, double, Exception?> _healthCheckPublisherError = LoggerMessage.Define<IHealthCheckPublisher, double>(
230+
LogLevel.Error,
231+
EventIds.HealthCheckPublisherError,
232+
"Health check {HealthCheckPublisher} threw an unhandled exception after {ElapsedMilliseconds}ms");
233+
234+
private static readonly Action<ILogger, IHealthCheckPublisher, double, Exception?> _healthCheckPublisherTimeout = LoggerMessage.Define<IHealthCheckPublisher, double>(
235+
LogLevel.Error,
236+
EventIds.HealthCheckPublisherTimeout,
237+
"Health check {HealthCheckPublisher} was canceled after {ElapsedMilliseconds}ms");
238+
239+
public static void HealthCheckPublisherProcessingBegin(ILogger logger)
240+
{
241+
_healthCheckPublisherProcessingBegin(logger, null);
242+
}
229243

230-
[LoggerMessage(EventIds.HealthCheckPublisherEndId, LogLevel.Debug, "Health check '{HealthCheckPublisher}' completed after {ElapsedMilliseconds}ms", EventName = EventIds.HealthCheckPublisherEndName)]
231-
private static partial void HealthCheckPublisherEnd(ILogger logger, IHealthCheckPublisher HealthCheckPublisher, double ElapsedMilliseconds);
244+
public static void HealthCheckPublisherProcessingEnd(ILogger logger, TimeSpan duration, Exception? exception = null)
245+
{
246+
_healthCheckPublisherProcessingEnd(logger, duration.TotalMilliseconds, exception);
247+
}
232248

233-
public static void HealthCheckPublisherError(ILogger logger, IHealthCheckPublisher publisher, TimeSpan duration, Exception exception) =>
234-
HealthCheckPublisherError(logger, publisher, duration.TotalMilliseconds, exception);
249+
public static void HealthCheckPublisherBegin(ILogger logger, IHealthCheckPublisher publisher)
250+
{
251+
_healthCheckPublisherBegin(logger, publisher, null);
252+
}
235253

236-
#pragma warning disable SYSLIB1006
237-
[LoggerMessage(EventIds.HealthCheckPublisherErrorId, LogLevel.Error, "Health check {HealthCheckPublisher} threw an unhandled exception after {ElapsedMilliseconds}ms", EventName = EventIds.HealthCheckPublisherErrorName)]
238-
private static partial void HealthCheckPublisherError(ILogger logger, IHealthCheckPublisher HealthCheckPublisher, double ElapsedMilliseconds, Exception exception);
254+
public static void HealthCheckPublisherEnd(ILogger logger, IHealthCheckPublisher publisher, TimeSpan duration)
255+
{
256+
_healthCheckPublisherEnd(logger, publisher, duration.TotalMilliseconds, null);
257+
}
239258

240-
public static void HealthCheckPublisherTimeout(ILogger logger, IHealthCheckPublisher publisher, TimeSpan duration) =>
241-
HealthCheckPublisherTimeout(logger, publisher, duration.TotalMilliseconds);
259+
public static void HealthCheckPublisherError(ILogger logger, IHealthCheckPublisher publisher, TimeSpan duration, Exception exception)
260+
{
261+
_healthCheckPublisherError(logger, publisher, duration.TotalMilliseconds, exception);
262+
}
242263

243-
[LoggerMessage(EventIds.HealthCheckPublisherTimeoutId, LogLevel.Error, "Health check {HealthCheckPublisher} was canceled after {ElapsedMilliseconds}ms", EventName = EventIds.HealthCheckPublisherTimeoutName)]
244-
private static partial void HealthCheckPublisherTimeout(ILogger logger, IHealthCheckPublisher HealthCheckPublisher, double ElapsedMilliseconds);
245-
#pragma warning restore SYSLIB1006
264+
public static void HealthCheckPublisherTimeout(ILogger logger, IHealthCheckPublisher publisher, TimeSpan duration)
265+
{
266+
_healthCheckPublisherTimeout(logger, publisher, duration.TotalMilliseconds, null);
267+
}
246268
}
247269
}
248270
}

0 commit comments

Comments
 (0)