- Overview
- Getting Started
- Managing Stacks
- Manual Stacking
- Filtering & Searching
- Bulk Actions
- Project Settings
- Versioning
- Reference Ids
- User Sessions
- Notifications
- Log Levels
- Event De-Duplication
- Integrations
- FAQ
- Comparison
- Security
- API Usage
- Clients
- Self Hosting
Upgrading
- Upgrading from Exceptionless 5.x
- Upgrading from Exceptionless 4.x
- Upgrading from Exceptionless 3.x
- Upgrading from Exceptionless 2.x
Upgrading from Exceptionless 5.x #
We bumped the major version due to serialization changes we made under the hood.
We now only apply snake case naming strategy to known exceptionless models. Any
extra data like custom exception properties or user defined data is preserved
exactly as is. We also made changes to ensure that empty collections and
dictionaries are now serialized as they were previously excluded.
Upgrading from Exceptionless 4.x #
Here is a breakdown of the breaking changes in each package
- Exceptionless Package
ExceptionlessClient
- renamed
UpdateUserEmailAndDescription
toUpdateUserEmailAndDescriptionAsync
and made it async. - removed
ProcessQueue
, replace this call with the async versionProcessQueueAsync
. - removed
ProcessQueueDeferred
, we recommend callingProcessQueueAsync
inIAsyncDisposable
pattern. The section below contains more information. - renamed
Shutdown
extension method toShutdownAsync
and made it async. - renamed
SubmitSessionEnd
extension method toSubmitSessionEndAsync
and made it async. - renamed
SubmitSessionHeartbeat
extension method toSubmitSessionHeartbeatAsync
and made it async.
- renamed
SettingsManager
- renamed
CheckVersion
toCheckVersionAsync
and made it async. - renamed
UpdateSettings
toUpdateSettingsAsync
and made it async.
- renamed
DefaultEventQueue
- removed
Process
, replace this call with the async versionProcessAsync
.
- removed
ProcessQueueScope
- removed this class, we recommend calling
await client.ProcessQueueAsync
inIAsyncDisposable
pattern. The section below contains more information.
- removed this class, we recommend calling
ISubmissionClient
- removed
PostEvents
, replace this call with the async versionPostEventsAsync
. - removed
PostUserDescription
, replace this call with the async versionPostUserDescriptionAsync
. - removed
GetSettings
, replace this call with the async versionGetSettingsAsync
. - removed
SendHeartbeat
, replace this call with the async versionSendHeartbeatAsync
.
- removed
- Exceptionless.WebApi Package
ExceptionlessClient extension methods
- renamed
UnregisterWebApi
toUnregisterWebApiAsync
and made it async.
- renamed
- Exceptionless.Windows Package
ExceptionlessClient extension methods
- renamed
Unregister
toUnregisterAsync
and made it async.
- renamed
- Exceptionless.Wpf Package
ExceptionlessClient extension methods
- renamed
Unregister
toUnregisterAsync
and made it async.
- renamed
ProcessQueueAsync IAsyncDisposable pattern #
We removed ProcessQueueDeferred
as it was doing asynchronous work inside of a synchronous dispose. The following pattern solves this issue.
We may introduce a this pattern in the core library at a later date targeting
.NET Core, we just didn't want to take on extra package dependencies, of
which could become a diamond dependency.
The change is pretty simple, just upgrade existing code calling ProcessQueueDeferred
using var _ = client.ProcessQueueDeferred();
and replace it with the following:
await using var _ = new ProcessQueueScope(client);
internal class ProcessQueueScope : IAsyncDisposable {
private readonly ExceptionlessClient _exceptionlessClient;
public ProcessQueueScope(ExceptionlessClient exceptionlessClient) {
_exceptionlessClient = exceptionlessClient;
}
public async ValueTask DisposeAsync() {
await _exceptionlessClient.ProcessQueueAsync();
}
}
We recommend creating a ProcessQueueScope
as a reusable utility class and feel free to rename it!
Upgrading from Exceptionless 3.x #
- The
Exceptionless.Portable
package andExceptionless.Extras
assembly was merged into theExceptionless
package.
Upgrading from Exceptionless 2.x #
IEventEnrichment
has been renamed toIEventPlugin
IEventPlugin.Enrich(context, event)
signature has been changed toIEventPlugin.Run(context)
. The event has been moved to the contextclient.Configuration.AddEnrichment<IEventEnrichment>();
has been renamed toclient.Configuration.AddPlugin<IEventPlugin>();
EventPluginContext.Data
property has been renamed toEventPluginContext.ContextData
EventSubmittingEventArgs.EnrichmentContextData
property has been renamed toEventSubmittingEventArgs.PluginContextData