Release Notes
This page tracks major changes included in any update starting with version 2.0.0.
Unreleased
- Moves to
net8.0builds for main packages (droppingnetstandard2.0andnetcoreapp*support) - Upgraded dependencies to avoid transitive CVE warnings for consumers
- Adds
Exceptional.Settings.CreatePathIfMissingfor auto-creating directories on startup (opt-in) - Moved to
Microsoft.Data.SqlClientfornet8.0(stillSystem.Data.SqlClientfornet462) to simplify migrations
Version 2.2.17
- Bumps from
netcoreapp3.0tonetcoreapp3.1(since .NET Core 3.0 is no loner supported) - Fixes capturing errors that happen early in ASP.NET application startup
Version 2.1.0
- ASP.NET Core 3.0 support (StackExchange.Exceptional.AspNetCore) with specific
netcoreapp3.0builds and fewer dependencies.
Version 2.0.0
Major version breaking changes
- An upgrade guide for moving from v1 to v2 can be found here
- Logging has changed fom static methods to
.Log()and.LogNoContext()extensions onException - Errors now have a
LastLogDatewhich is updated when duplicates are logged - Errors now have a
Categoryfield for use in storage (no UI changes yet) - Due to the additions above, new columns are necessary on data stores. Upgrade scripts for every provider above are in the V2 upgrade guide.
- Settings have changed greatly in code and for ASP.NET Core, but existing
web.configsettings should load as-is. The sample applications and getting started guides above explain usage.
Features
- ASP.NET Core 2.0+ support (StackExchange.Exceptional.AspNetCore)
- Getting started docs
- Additional
UseExceptionalPageOnThrowsetting, which will use the Exceptional error page when an exception occurs (like.UseDeveloperExceptionPage()but with more detail and any custom logging)
- ASP.NET (non-Core) support (StackExchange.Exceptional)
- Getting started docs
- Existing
web.configconfiguration will work, code-based configuration will require changes (see below)
- Non-ASP.NET support for both
net461+ andnetstandard2.0+- Introduces a
StackExchange.Exceptional.Sharedlibrary (a NuGet dependency) for shared code in all of the above
- Introduces a
- Stack traces are color coded and much more readable
asyncstack traces are also much less noisy and state machine frames are collapsed- SourceLink URLs are supported (GitHub built-in) - if the file source is on GitHub, it will be linked in the HTML stack trace
- All of the above is usable outside the library via
ExceptionalUtils.StackTrace.HtmlPrettify()
Commandsare generally accessible and not just SQL-centric anymore (for example logging a Redis command)- These can be added via
.AddHandler()(example here) - Highlighting in the log is provided by highlight.js
- These can be added via
- All methods for storage providers are now
async(since more are off-box)- HttpModule is also
asyncnow (see getting started guides above for examples)
- HttpModule is also
- Added a
.AddLogData()extension method onExceptionfor quickly adding key/value pairs for logging custom data - Supported storage providers
- In-memory (built-in)
- JSON on Disk (built-in)
- SQL Server (built-in)
- MySQL (via StackExchange.Exceptional.MySQL)
- PostgreSql (via StackExchange.Exceptional.PostgreSql)
- MongoDB (via StackExchange.Exceptional.MongoDB)
- Internal changes
- Moves to
.lessfor styling for easier maintenance (currently requires WebCompiler extension for changes) - Combined
.jsfiles via bundler
- Moves to
- For more details, see the v2 tracking issue #85