agoda-com / agoda-com/AgodaAnalyzers

Passing exception into Logger as message arg

Open
#168 2 comments 1 reaction 0 assignees View on GitHub
enhancement New Rule Proposal
Dominant language
C#
Stars
25
Forks
15
PR merge metrics
No merged PRs in 30d

Description

# Feature request

## Type

- [x] - Enhancement - completely new feature
- [ ] - Improvement - make what we have better

## Is your feature request related to a problem?

`Microsoft.Extensions.Logging.LoggerExtensions` have several overloads that take exceptions. The signature is usually in the format of
```csharp
public static void LogInformation(this ILogger logger, Exception exception, string message, params object[] args)
```
the exception being the first parameter of the extension method.

There is another overload, that doesn't take an exception:
```csharp
public static void LogInformation(this ILogger logger, string message, params object[] args)
````
People often make a mistake of using this overload, assuming that the exception is the second parameter, like
```csharp
_logger.LogError("Something went wrong", ex);
```
This will result in logs that doesn't contain any information about the actual exception, since it will just try to fit `ex` into the message template.

## Describe the solution you'd like

Show warning if an exception is passed as a parameter to an overload that does not take an exception as a parameter. Even if the intent is to pass the exception into the message template, I believe we should use the overload that also takes the message.

## Additional context

N/A

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.