Skip to content

Commit ae8ddd3

Browse files
authored
feat: add support for .net 8.0 and 9.0
2 parents c31c164 + 322e554 commit ae8ddd3

35 files changed

+431
-273
lines changed

.config/dotnet-tools.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
"isRoot": true,
44
"tools": {
55
"versionize": {
6-
"version": "1.13.0",
6+
"version": "2.3.0",
77
"commands": [
88
"versionize"
99
]
1010
},
1111
"husky": {
12-
"version": "0.4.2",
12+
"version": "0.7.2",
1313
"commands": [
1414
"husky"
1515
]

.github/workflows/ci.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,19 @@ jobs:
88
name: Build & Test
99
runs-on: ubuntu-latest
1010
timeout-minutes: 15
11-
strategy:
12-
matrix:
13-
dotnet-version: [ '5.0.x', '6.0.x' ]
1411
steps:
1512
- name: Checkout
1613
uses: actions/checkout@v3
1714

18-
- name: Setup .NET Core SDK ${{ matrix.dotnet-version }}
15+
- name: Setup .NET Core SDK 8.0
1916
uses: actions/setup-dotnet@v3
2017
with:
21-
dotnet-version: ${{ matrix.dotnet-version }}
18+
dotnet-version: 8.0.x
19+
20+
- name: Setup .NET Core SDK 9.0
21+
uses: actions/setup-dotnet@v3
22+
with:
23+
dotnet-version: 9.0.x
2224

2325
- name: Install dependencies
2426
run: dotnet restore

README.md

Lines changed: 104 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,54 @@ This is the .Net Honeybadger Notifier.
44

55
## Supported .Net versions:
66

7-
| Family | Version |
8-
|----------------|----------|
9-
| .Net | 5.0, 6.0 |
10-
| .Net Standard | 2.0, 2.1 |
11-
| .Net Core | 3.0, 3.1 |
12-
| .Net Framework | 4.6.1 |
7+
All modern .Net Core applications are supported, up to .Net 9.0.
138

149
## Getting Started
1510

11+
### Configuration
12+
13+
The Honeybadger Notifier can be configured using the `HoneybadgerOptions` class
14+
(or `HoneybadgerLoggingOptions` when using as a logger).
15+
Honeybadger can be configured by passing the options when registering the service,
16+
or through your `appsettings.json` file.
17+
18+
Honeybadger, by default, will not report errors in development environments.
19+
You can override the development environments by setting the `DevelopmentEnvironments` property in the options.
20+
Alternatively, you can set the `ReportData` property to `true` to report errors in all environments.
21+
22+
See below for examples on how to configure Honeybadger for different types of applications.
23+
1624
### For .Net Core Web App
1725

1826
1. Install Honeybadger.DotNetCore from Nuget
19-
```
20-
dotnet add package Honeybadger.DotNetCore
21-
```
27+
```
28+
dotnet add package Honeybadger.DotNetCore
29+
```
2230
2. Register the _Honeybadger Middleware_:
23-
```c#
24-
var builder = WebApplication.CreateBuilder(args);
25-
builder.Services.AddHoneybadger();
26-
```
27-
28-
You can get access to the _Honeybadger Client_ using _DI_:
31+
```c#
32+
var builder = WebApplication.CreateBuilder(args);
33+
builder.AddHoneybadger(new HoneybadgerOptions("api_key"));
34+
```
35+
36+
Or you can configure Honeybadger through your `appsettings.json` file, by adding a `Honeybadger` section:
37+
```json
38+
{
39+
"Honeybadger": {
40+
"ApiKey": "api_key",
41+
"AppEnvironment": "Development",
42+
"ReportData": true
43+
}
44+
}
45+
```
46+
And simply call `AddHoneybadger` without any parameters:
47+
```c#
48+
var builder = WebApplication.CreateBuilder(args);
49+
builder.AddHoneybadger();
50+
```
51+
52+
#### Usage
53+
54+
You can access the _Honeybadger Client_ using _DI_:
2955
```c#
3056
app.MapGet("/", ([FromServices] IHoneybadgerClient client) =>
3157
{
@@ -34,7 +60,8 @@ app.MapGet("/", ([FromServices] IHoneybadgerClient client) =>
3460
return "Hello World!";
3561
});
3662
```
37-
2. Any unhandled exceptions should be reported to Honeybadger automatically:
63+
64+
Any unhandled exceptions should be reported to Honeybadger automatically:
3865
```c#
3966
app.MapGet("/debug", () =>
4067
{
@@ -47,43 +74,76 @@ See example project in `examples/Honeybadger.DotNetCoreWebApp`.
4774
### As a custom logging provider
4875

4976
1. Install Honeybadger.Extensions.Logging from Nuget
50-
```
51-
dotnet add package Honeybadger.Extensions.Logging
52-
```
77+
```
78+
dotnet add package Honeybadger.Extensions.Logging
79+
```
5380
2. Register the custom logging provider:
54-
```c#
55-
var builder = WebApplication.CreateBuilder(args);
56-
builder.Logging.AddHoneybadger();
57-
```
58-
3. Errors from the `logger` will be reported to Honeybadger:
59-
```c#
60-
app.MapGet("/notify", ([FromServices] ILogger logger) =>
61-
{
62-
logger.LogError("hello from Honeybadger.Logger!");
63-
64-
return "Log reported to Honeybadger. Check your dashboard!";
65-
});
66-
```
81+
```c#
82+
var builder = WebApplication.CreateBuilder(args);
83+
builder.Logging.AddHoneybadger(new HoneybadgerLoggingOptions
84+
{
85+
ApiKey = "api_key",
86+
Environment = "Development",
87+
ReportData = true,
88+
MinimumLogLevel = LogLevel.Error,
89+
MinimumBreadcrumbLevel = LogLevel.Information
90+
});
91+
```
92+
93+
Or you can configure Honeybadger through your `appsettings.json` file, by adding a `Honeybadger` section inside the `Logging` section:
94+
```json
95+
{
96+
"Logging": {
97+
"Honeybadger": {
98+
"ApiKey": "_api_key",
99+
"AppEnvironment": "Development",
100+
"ReportData": true,
101+
"MinimumLogLevel": "Error",
102+
"MinimumBreadcrumbLevel": "Information"
103+
}
104+
}
105+
}
106+
```
107+
And simply call `AddHoneybadger` without any parameters:
108+
```c#
109+
var builder = WebApplication.CreateBuilder(args);
110+
builder.Logging.AddHoneybadger();
111+
```
112+
113+
#### Usage
114+
115+
Errors from the `logger` will be reported to Honeybadger:
116+
```c#
117+
app.MapGet("/notify", ([FromServices] ILogger logger) =>
118+
{
119+
logger.LogError("hello from Honeybadger.Logger!");
120+
121+
return "Log reported to Honeybadger. Check your dashboard!";
122+
});
123+
```
67124

68125
See example project in `examples/Honeybadger.DotNetCoreWebApp.Logger`.
69126

70127
### Using the SDK manually
71128

72129
1. Install the [Honeybadger Nuget](https://www.nuget.org/packages/Honeybadger).
73-
```
74-
dotnet add package Honeybadger
75-
```
130+
```
131+
dotnet add package Honeybadger
132+
```
76133
2. Initialize the _Honeybadger Client_:
77-
```c#
78-
var client = HoneybadgerSdk.Init(new HoneybadgerOptions("apiKey")
79-
{
80-
AppEnvironment = "development"
81-
});
82-
```
134+
```c#
135+
using Microsoft.Extensions.Options;
136+
137+
var options = new HoneybadgerOptions("apiKey");
138+
var client = new HoneybadgerClient(Options.Create(options));
139+
```
83140
3. Call `notify` to report to Honeybadger:
84-
```c#
85-
client.Notify("hello from .Net !");
86-
```
141+
```c#
142+
// blocking
143+
client.Notify("hello from .Net !");
144+
// or async
145+
await client.NotifyAsync("hello from .Net !");
146+
```
87147

88148
See example project in `examples/Honeybadger.Console`.
89149

@@ -112,16 +172,11 @@ The workflow does the following:
112172

113173
_Note: only users with write permissions can trigger this workflow (i.e. Collaborators)._
114174

115-
## Known bugs
116-
117-
- [ ] Always shows "Honeybadger.HoneybadgerClient" when reporting a notice with a message
118-
119175
## TODO
120176

121177
- [ ] Publish README with basic info to setup core nuget
122178
- [ ] Publish Honeybadger.DotNetCore with README
123179
- [ ] Publish Honeybadger.Extensions.Logging with README
124-
- [ ] Deploy under Honeybadger org
125180
- [ ] Implement Error Grouping (custom fingerprint)
126181
- [ ] Implement Error Tags
127182
- [ ] Allow excluding errors (either with a BeforeNotify method or exception classes config)
Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net6.0</TargetFramework>
5+
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<Nullable>enable</Nullable>
88
</PropertyGroup>
@@ -12,7 +12,17 @@
1212
</ItemGroup>
1313

1414
<ItemGroup>
15-
<PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0" />
15+
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.1" />
16+
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.1" />
17+
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="9.0.1" />
18+
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="9.0.1" />
19+
<PackageReference Include="Microsoft.Extensions.Options" Version="9.0.1" />
20+
</ItemGroup>
21+
22+
<ItemGroup>
23+
<None Update="appsettings.json">
24+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
25+
</None>
1626
</ItemGroup>
1727

1828
</Project>
Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
1-
// See https://aka.ms/new-console-template for more information
1+
using Honeybadger;
2+
using Microsoft.Extensions.Configuration;
3+
using Microsoft.Extensions.Options;
24

3-
using Honeybadger;
5+
var builder = new ConfigurationBuilder();
6+
var baseDir = Directory.GetCurrentDirectory();
7+
var configuration = builder
8+
.SetBasePath(baseDir)
9+
.AddJsonFile("appsettings.json", false, false)
10+
.Build();
411

5-
Console.WriteLine("Hello, World!");
12+
var options = new HoneybadgerOptions();
13+
configuration
14+
.GetSection("Honeybadger")
15+
.Bind(options);
616

7-
var client = HoneybadgerSdk.Init(new HoneybadgerOptions("YOUR_HONEYBADGER_API_KEY")
8-
{
9-
AppEnvironment = "development"
10-
});
11-
12-
client.Notify("hello from .Net !");
17+
var client = new HoneybadgerClient(Options.Create(options));
18+
client.Notify("Hello from .Net! Improved error handling with Honeybadger.");
19+
Console.WriteLine("Done. Check your Honeybadger dashboard for the error.");
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"Logging": {
3+
"LogLevel": {
4+
"Default": "Debug",
5+
"System": "Information",
6+
"Microsoft": "Information"
7+
}
8+
},
9+
"Honeybadger": {
10+
"ApiKey": "api_key",
11+
"AppEnvironment": "development",
12+
"ReportData": true
13+
}
14+
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
<Project Sdk="Microsoft.NET.Sdk.Web">
22

33
<PropertyGroup>
4-
<TargetFramework>net6.0</TargetFramework>
4+
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
55
<Nullable>enable</Nullable>
66
<ImplicitUsings>enable</ImplicitUsings>
77
</PropertyGroup>
88

99
<ItemGroup>
1010
<ProjectReference Include="..\..\src\Honeybadger.Extensions.Logging\Honeybadger.Extensions.Logging.csproj" />
11+
<ProjectReference Include="..\..\src\Honeybadger.DotNetCore\Honeybadger.DotNetCore.csproj" />
12+
<ProjectReference Include="..\..\src\Honeybadger\Honeybadger.csproj" />
1113
</ItemGroup>
1214

1315
</Project>

examples/Honeybadger.DotNetCoreWebApp.Logger/Program.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66
var app = builder.Build();
77

88
app.MapGet("/", () => "Hello World!");
9-
app.MapGet("/notify", ([FromServices] ILogger logger) =>
9+
app.MapGet("/notify", ([FromServices] ILogger<Program> logger) =>
1010
{
11-
logger.LogError("hello from Honeybadger.Logger!");
11+
logger.LogError("Hello from Honeybadger.Logger! Improved error handling with Honeybadger.");
1212

1313
return "Log reported to Honeybadger. Check your dashboard!";
1414
});
1515

16-
app.Run();
16+
app.Run();
17+
18+
public partial class Program {}

examples/Honeybadger.DotNetCoreWebApp.Logger/appsettings.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
"LogLevel": {
44
"Default": "Information",
55
"Microsoft.AspNetCore": "Warning"
6+
},
7+
"Honeybadger": {
8+
"ApiKey": "api_key",
9+
"AppEnvironment": "development",
10+
"ReportData": true
611
}
712
},
813
"AllowedHosts": "*"

examples/Honeybadger.DotNetCoreWebApp/Honeybadger.DotNetCoreWebApp.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Web">
22

33
<PropertyGroup>
4-
<TargetFramework>net6.0</TargetFramework>
4+
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
55
<Nullable>enable</Nullable>
66
<ImplicitUsings>enable</ImplicitUsings>
77
</PropertyGroup>

0 commit comments

Comments
 (0)