Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding Microsoft.Extensions.Telemetry.Abstractions README #4670

Merged
merged 3 commits into from
Nov 6, 2023

Conversation

joperezr
Copy link
Member

@joperezr joperezr commented Nov 5, 2023

Adding Microsoft.Extensions.Telemetry.Abstractions README

Microsoft Reviewers: Open in CodeFlow

Copy link
Member

@sebastienros sebastienros left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use Pascal case for log arguments (used in our code base).
Some past tense. Feel free to ignore if it does not matter.

It also adds the `LogProperties` attribute which can be applied to a an object parameter of a `LoggerMessage` method. It introspects the passed-in object and automatically adds tags for all its properties. This leads to more informative logs without the need for manual tagging of each property.

```csharp
[LoggerMessage(1, LogLevel.Information, "Detected a new temperature: {temperature}")]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
[LoggerMessage(1, LogLevel.Information, "Detected a new temperature: {temperature}")]
[LoggerMessage(1, LogLevel.Information, "Detected a new temperature: {Temperature}")]

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should match the parameter name, which is lower case.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Keep in mind that this is using a different generator which adds additional constraints and diagnostics (this is using Microsoft.Extensions.Telemetry.Abstractions logging generator)

I believe in the past I've seen warnings when parameter name doesn't exactly match the template, @geeknoid can you confirm?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I checked back and it does seem like this is not case-sensitive as you suggested, which also seems to be called out explicitly https://learn.microsoft.com/en-us/dotnet/core/extensions/logger-message-generator#case-insensitive-template-name-support . Anyway, since it's not a convention that we should upper case those, I've left it lowercase for now (I also hope it helps describing that what should match is paramter name as opposed to the parameter type, since in my example both are the same).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First letter can be either lowercased or uppercased, you can check Iliar's PR: #4584

joperezr and others added 2 commits November 6, 2023 14:00
Co-authored-by: Sébastien Ros <sebastienros@gmail.com>
@joperezr joperezr enabled auto-merge (squash) November 6, 2023 22:02
@joperezr joperezr merged commit f06f5aa into release/8.0 Nov 6, 2023
6 checks passed
@joperezr joperezr deleted the joperezr/TelemetryAbstractionsReadme branch November 6, 2023 22:23
Logging data can be enriched by adding custom log enrichers to the service collection. This can be done using specific implementations or generic types.

```csharp
// Using a specific implementation
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

implementation -> instance?

builder.Services.AddLogEnricher<AnotherLogEnricher>();
```

Create custom log enrichers by implementing the `ILogEnricher` interface.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Worth mentioning IStaticLogEnricher too

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@github-actions github-actions bot locked and limited conversation to collaborators Dec 8, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants