Skip to content

Commit 3b9b026

Browse files
committed
Normalized Structured Logging Parts.
1 parent 26ee2ff commit 3b9b026

28 files changed

+78
-77
lines changed

src/Exceptionless.Core/Billing/StripeEventHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public async Task HandleEventAsync(Stripe.Event stripeEvent)
5252
}
5353
default:
5454
{
55-
_logger.LogTrace("Unhandled stripe webhook called. Type: {Type} Id: {Id} Account: {Account}", stripeEvent.Type, stripeEvent.Id, stripeEvent.Account);
55+
_logger.LogTrace("Unhandled stripe webhook called. Type: {StripeType} Id: {StripeId} Account: {StripeAccount}", stripeEvent.Type, stripeEvent.Id, stripeEvent.Account);
5656
break;
5757
}
5858
}

src/Exceptionless.Core/Extensions/LogBuilderExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ public class ExceptionlessState : Dictionary<string, object?>
55
public ExceptionlessState Project(string projectId)
66
{
77
if (!String.IsNullOrEmpty(projectId))
8-
base["project"] = projectId;
8+
base["Project"] = projectId;
99

1010
return this;
1111
}
1212

1313
public ExceptionlessState Organization(string organizationId)
1414
{
1515
if (!String.IsNullOrEmpty(organizationId))
16-
base["organization"] = organizationId;
16+
base["Organization"] = organizationId;
1717

1818
return this;
1919
}

src/Exceptionless.Core/Extensions/LoggerExtensions.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ internal static class LoggerExtensions
1010
LoggerMessage.Define<string, string, string>(
1111
LogLevel.Trace,
1212
new EventId(0, nameof(RecordWebHook)),
13-
"Process web hook call: id={Id} project={ProjectId} url={Url}");
13+
"Process web hook call: id={WebHook} project={Project} url={Url}");
1414

1515
private static readonly Action<ILogger, Exception?> _webHookCancelled =
1616
LoggerMessage.Define(
@@ -28,25 +28,25 @@ internal static class LoggerExtensions
2828
LoggerMessage.Define<HttpStatusCode?, string, string, string>(
2929
LogLevel.Error,
3030
new EventId(3, nameof(WebHookTimeout)),
31-
"Timeout calling web hook: status={Status} org={organization} project={ProjectId} url={Url}");
31+
"Timeout calling web hook: status={Status} organization={Organization} project={Project} url={Url}");
3232

3333
private static readonly Action<ILogger, HttpStatusCode?, string, string, string, Exception?> _webHookError =
3434
LoggerMessage.Define<HttpStatusCode?, string, string, string>(
3535
LogLevel.Error,
3636
new EventId(4, nameof(WebHookError)),
37-
"Error calling web hook: status={Status} org={organization} project={ProjectId} url={Url}");
37+
"Error calling web hook: status={Status} organization={Organization} project={Project} url={Url}");
3838

3939
private static readonly Action<ILogger, HttpStatusCode?, string, string, string, Exception?> _webHookComplete =
4040
LoggerMessage.Define<HttpStatusCode?, string, string, string>(
4141
LogLevel.Information,
4242
new EventId(5, nameof(WebHookError)),
43-
"Web hook POST complete: status={Status} org={organization} project={ProjectId} url={Url}");
43+
"Web hook POST complete: status={Status} organization={Organization} project={Project} url={Url}");
4444

4545
private static readonly Action<ILogger, string, HttpStatusCode?, string, string, string, Exception?> _webHookDisabledStatusCode =
4646
LoggerMessage.Define<string, HttpStatusCode?, string, string, string>(
4747
LogLevel.Warning,
4848
new EventId(6, nameof(WebHookDisabledStatusCode)),
49-
"Disabling Web hook instance {WebHookId} due to status code: status={Status} org={organization} project={ProjectId} url={Url}");
49+
"Disabling Web hook instance {WebHookId} due to status code: status={Status} organization={Organization} project={Project} url={Url}");
5050

5151
private static readonly Action<ILogger, string, Exception?> _webHookDisabledTooManyErrors =
5252
LoggerMessage.Define<string>(
@@ -82,25 +82,25 @@ internal static class LoggerExtensions
8282
LoggerMessage.Define<string, string>(
8383
LogLevel.Information,
8484
new EventId(12, nameof(RemoveOrganizationStart)),
85-
"Removing organization: {Organization} ({OrganizationId})");
85+
"Removing organization: {OrganizationName} ({Organization})");
8686

8787
private static readonly Action<ILogger, string, string, long, long, long, Exception?> _removeOrganizationComplete =
8888
LoggerMessage.Define<string, string, long, long, long>(
8989
LogLevel.Information,
9090
new EventId(14, nameof(RemoveOrganizationComplete)),
91-
"Removed organization: {Organization} ({OrganizationId}), Removed {RemovedProjects} Projects, {RemovedStacks} Stacks, {RemovedEvents} Events");
91+
"Removed organization: {OrganizationName} ({Organization}), Removed {RemovedProjects} Projects, {RemovedStacks} Stacks, {RemovedEvents} Events");
9292

9393
private static readonly Action<ILogger, string, string, Exception?> _removeProjectStart =
9494
LoggerMessage.Define<string, string>(
9595
LogLevel.Information,
9696
new EventId(15, nameof(RemoveProjectStart)),
97-
"Removing project: {Project} ({ProjectId})");
97+
"Removing project: {ProjectName} ({Project})");
9898

9999
private static readonly Action<ILogger, string, string, long, long, Exception?> _removeProjectComplete =
100100
LoggerMessage.Define<string, string, long, long>(
101101
LogLevel.Information,
102102
new EventId(16, nameof(RemoveProjectComplete)),
103-
"Removed project: {Project} ({ProjectId}), Removed {RemovedStacks} Stacks, {RemovedEvents} Events");
103+
"Removed project: {ProjectName} ({Project}), Removed {RemovedStacks} Stacks, {RemovedEvents} Events");
104104

105105

106106
private static readonly Action<ILogger, long, long, Exception?> _removeStacksComplete =
@@ -113,25 +113,25 @@ internal static class LoggerExtensions
113113
LoggerMessage.Define<DateTime, string, string, long>(
114114
LogLevel.Information,
115115
new EventId(18, nameof(RetentionEnforcementStackStart)),
116-
"Enforcing stack retention period older than {RetentionPeriod:g} for organization {OrganizationName} ({OrganizationId}), Found {TotalStacks} Stacks");
116+
"Enforcing stack retention period older than {RetentionPeriod:g} for organization {OrganizationName} ({Organization}), Found {TotalStacks} Stacks");
117117

118118
private static readonly Action<ILogger, string, string, long, Exception?> _retentionEnforcementStackComplete =
119119
LoggerMessage.Define<string, string, long>(
120120
LogLevel.Information,
121121
new EventId(19, nameof(RetentionEnforcementStackComplete)),
122-
"Enforced stack retention period for {OrganizationName} ({OrganizationId}), Removed {RemovedStacks} Stacks");
122+
"Enforced stack retention period for {OrganizationName} ({Organization}), Removed {RemovedStacks} Stacks");
123123

124124
private static readonly Action<ILogger, DateTime, string, string, Exception?> _retentionEnforcementEventStart =
125125
LoggerMessage.Define<DateTime, string, string>(
126126
LogLevel.Information,
127127
new EventId(20, nameof(RetentionEnforcementEventStart)),
128-
"Enforcing event retention period older than {RetentionPeriod:g} for organization {OrganizationName} ({OrganizationId}).");
128+
"Enforcing event retention period older than {RetentionPeriod:g} for organization {OrganizationName} ({Organization}).");
129129

130130
private static readonly Action<ILogger, string, string, long, Exception?> _retentionEnforcementEventComplete =
131131
LoggerMessage.Define<string, string, long>(
132132
LogLevel.Information,
133133
new EventId(21, nameof(RetentionEnforcementEventComplete)),
134-
"Enforced event retention period for {OrganizationName} ({OrganizationId}), Removed {RemovedEvents} Events");
134+
"Enforced event retention period for {OrganizationName} ({Organization}), Removed {RemovedEvents} Events");
135135

136136
public static void RemoveStacksComplete(this ILogger logger, long removedStacks, long removedEvents)
137137
=> _removeStacksComplete(logger, removedStacks, removedEvents, null);

src/Exceptionless.Core/Jobs/CleanupDataJob.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ private async Task CleanupSoftDeletedOrganizationsAsync(JobContext context)
113113
}
114114
catch (Exception ex)
115115
{
116-
_logger.LogError(ex, "Error removing soft deleted organization {OrganizationId}: {Message}", organization.Id, ex.Message);
116+
_logger.LogError(ex, "Error removing soft deleted organization {Organization}: {Message}", organization.Id, ex.Message);
117117
}
118118

119119
// Sleep so we are not hammering the backend.
@@ -141,7 +141,7 @@ private async Task CleanupSoftDeletedProjectsAsync(JobContext context)
141141
}
142142
catch (Exception ex)
143143
{
144-
_logger.LogError(ex, "Error removing soft deleted project {ProjectId}: {Message}", project.Id, ex.Message);
144+
_logger.LogError(ex, "Error removing soft deleted project {Project}: {Message}", project.Id, ex.Message);
145145
}
146146

147147
// Sleep so we are not hammering the backend.
@@ -246,7 +246,7 @@ private async Task EnforceRetentionAsync(JobContext context)
246246
}
247247
catch (Exception ex)
248248
{
249-
_logger.LogError(ex, "Error enforcing retention for Organization {OrganizationId}: {Message}", organization.Id, ex.Message);
249+
_logger.LogError(ex, "Error enforcing retention for Organization {Organization}: {Message}", organization.Id, ex.Message);
250250
}
251251

252252
// Sleep so we are not hammering the backend.

src/Exceptionless.Core/Jobs/CleanupOrphanedDataJob.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ public async Task FixDuplicateStacks(JobContext context)
239239
var stacks = await _stackRepository.FindAsync(q => q.Project(projectId).FilterExpression($"signature_hash:{signature}"));
240240
if (stacks.Documents.Count < 2)
241241
{
242-
_logger.LogError("Did not find multiple stacks with signature {SignatureHash} and project {ProjectId}", signature, projectId);
242+
_logger.LogError("Did not find multiple stacks with signature {SignatureHash} and project {Project}", signature, projectId);
243243
continue;
244244
}
245245

@@ -341,7 +341,7 @@ public async Task FixDuplicateStacks(JobContext context)
341341
catch (Exception ex)
342342
{
343343
error++;
344-
_logger.LogError(ex, "Error fixing duplicate stack {ProjectId} {SignatureHash}", projectId, signature);
344+
_logger.LogError(ex, "Error fixing duplicate stack {Project} {SignatureHash}", projectId, signature);
345345
}
346346
}
347347

src/Exceptionless.Core/Jobs/DailySummaryJob.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ private async Task<bool> SendSummaryNotificationAsync(Project project, SummaryNo
151151
return false;
152152
}
153153

154-
_logger.LogInformation("Sending daily summary: users={UserCount} project={ProjectId}", users.Count, project.Id);
154+
_logger.LogInformation("Sending daily summary: users={UserCount} project={Project}", users.Count, project.Id);
155155
var sf = new AppFilter(project, organization);
156156
var systemFilter = new RepositoryQuery<PersistentEvent>().AppFilter(sf).DateRange(data.UtcStartTime, data.UtcEndTime, (PersistentEvent e) => e.Date).Index(data.UtcStartTime, data.UtcEndTime);
157157
string filter = "type:error (status:open OR status:regressed)";

src/Exceptionless.Core/Jobs/EventNotificationsJob.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ protected override async Task<JobResult> ProcessQueueEntryAsync(QueueEntryContex
6363

6464
bool shouldLog = ev.ProjectId != _appOptions.InternalProjectId;
6565
int sent = 0;
66-
if (shouldLog) _logger.LogTrace("Process notification: project={ProjectId} event={Id} stack={Stack}", ev.ProjectId, ev.Id, ev.StackId);
66+
if (shouldLog) _logger.LogTrace("Process notification: project={Project} event={Event} stack={Stack}", ev.ProjectId, ev.Id, ev.StackId);
6767

6868
var project = await _projectRepository.GetByIdAsync(ev.ProjectId, o => o.Cache());
6969
if (project is null)
@@ -146,7 +146,7 @@ protected override async Task<JobResult> ProcessQueueEntryAsync(QueueEntryContex
146146
if (sent > 0)
147147
{
148148
await _cache.SetAsync(String.Concat("notify:stack-throttle:", ev.StackId), _timeProvider.GetUtcNow().UtcDateTime, _timeProvider.GetUtcNow().UtcDateTime.AddMinutes(15));
149-
if (shouldLog) _logger.LogInformation("Notifications sent: event={Id} stack={Stack} count={SentCount}", ev.Id, ev.StackId, sent);
149+
if (shouldLog) _logger.LogInformation("Notifications sent: event={Event} stack={Stack} count={SentCount}", ev.Id, ev.StackId, sent);
150150
}
151151
}
152152
return JobResult.Success;
@@ -175,7 +175,7 @@ private async Task<bool> SendEmailNotificationAsync(string userId, Project proje
175175

176176
if (!user.OrganizationIds.Contains(project.OrganizationId))
177177
{
178-
if (shouldLog) _logger.LogError("Unauthorized user: project={ProjectId} user={UserId} organization={Organization} event={Id}", project.Id, userId, project.OrganizationId, ev.Id);
178+
if (shouldLog) _logger.LogError("Unauthorized user: project={Project} user={UserId} organization={Organization} event={Event}", project.Id, userId, project.OrganizationId, ev.Id);
179179
return false;
180180
}
181181

src/Exceptionless.Core/Jobs/EventPostsJob.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,14 +82,14 @@ protected override async Task<JobResult> ProcessQueueEntryAsync(QueueEntryContex
8282
bool isInternalProject = ep.ProjectId == _appOptions.InternalProjectId;
8383
if (!isInternalProject && _logger.IsEnabled(LogLevel.Information))
8484
{
85-
using (_logger.BeginScope(new ExceptionlessState().Tag("processing").Tag("compressed").Tag(ep.ContentEncoding).Value(payload.Length)))
86-
_logger.LogInformation("Processing post: id={QueueEntryId} path={FilePath} project={ProjectId} ip={IpAddress} v={ApiVersion} agent={UserAgent}", entry.Id, payloadPath, ep.ProjectId, ep.IpAddress, ep.ApiVersion, ep.UserAgent);
85+
using var processingScope = _logger.BeginScope(new ExceptionlessState().Tag("processing").Tag("compressed").Tag(ep.ContentEncoding).Value(payload.Length));
86+
_logger.LogInformation("Processing post: id={QueueEntryId} path={FilePath} project={Project} ip={IpAddress} v={ApiVersion} agent={UserAgent}", entry.Id, payloadPath, ep.ProjectId, ep.IpAddress, ep.ApiVersion, ep.UserAgent);
8787
}
8888

8989
var project = await projectTask;
9090
if (project is null)
9191
{
92-
if (!isInternalProject) _logger.LogError("Unable to process EventPost {FilePath}: Unable to load project: {ProjectId}", payloadPath, ep.ProjectId);
92+
if (!isInternalProject) _logger.LogError("Unable to process EventPost {FilePath}: Unable to load project: {Project}", payloadPath, ep.ProjectId);
9393
await Task.WhenAll(CompleteEntryAsync(entry, ep, _timeProvider.GetUtcNow().UtcDateTime), organizationTask);
9494
return JobResult.Success;
9595
}
@@ -153,7 +153,7 @@ protected override async Task<JobResult> ProcessQueueEntryAsync(QueueEntryContex
153153
if (organization is null)
154154
{
155155
if (!isInternalProject)
156-
_logger.LogError("Unable to process EventPost {FilePath}: Unable to load organization: {OrganizationId}", payloadPath, project.OrganizationId);
156+
_logger.LogError("Unable to process EventPost {FilePath}: Unable to load organization: {Organization}", payloadPath, project.OrganizationId);
157157

158158
await CompleteEntryAsync(entry, ep, _timeProvider.GetUtcNow().UtcDateTime);
159159
return JobResult.Success;

src/Exceptionless.Core/Jobs/EventUserDescriptionsJob.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,21 @@ public EventUserDescriptionsJob(IQueue<EventUserDescription> queue, IEventReposi
2323

2424
protected override async Task<JobResult> ProcessQueueEntryAsync(QueueEntryContext<EventUserDescription> context)
2525
{
26-
_logger.LogTrace("Processing user description: id={0}", context.QueueEntry.Id);
26+
_logger.LogTrace("Processing user description: id={QueueEntryId}", context.QueueEntry.Id);
2727

2828
try
2929
{
3030
await ProcessUserDescriptionAsync(context.QueueEntry.Value);
31-
_logger.LogInformation("Processed user description: id={Id}", context.QueueEntry.Id);
31+
_logger.LogInformation("Processed user description: id={QueueEntryId}", context.QueueEntry.Id);
3232
}
3333
catch (DocumentNotFoundException ex)
3434
{
35-
_logger.LogError(ex, "An event with this reference id {ReferenceId} has not been processed yet or was deleted. Queue Id: {Id}", ex.Id, context.QueueEntry.Id);
35+
_logger.LogError(ex, "An event with this reference id {ReferenceId} has not been processed yet or was deleted. Queue Id: {QueueEntryId}", ex.Id, context.QueueEntry.Id);
3636
return JobResult.FromException(ex);
3737
}
3838
catch (Exception ex)
3939
{
40-
_logger.LogError(ex, "An error occurred while processing the EventUserDescription {Id}: {Message}", context.QueueEntry.Id, ex.Message);
40+
_logger.LogError(ex, "An error occurred while processing the EventUserDescription {QueueEntryId}: {Message}", context.QueueEntry.Id, ex.Message);
4141
return JobResult.FromException(ex);
4242
}
4343

src/Exceptionless.Core/Jobs/MailMessageJob.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public MailMessageJob(IQueue<MailMessage> queue, IMailSender mailSender, TimePro
2020

2121
protected override async Task<JobResult> ProcessQueueEntryAsync(QueueEntryContext<MailMessage> context)
2222
{
23-
_logger.LogTrace("Processing message {Id}", context.QueueEntry.Id);
23+
_logger.LogTrace("Processing message {QueueEntryId}", context.QueueEntry.Id);
2424

2525
try
2626
{

0 commit comments

Comments
 (0)