Raygun4Maui 1.4.0
See the version list below for details.
dotnet add package Raygun4Maui --version 1.4.0
NuGet\Install-Package Raygun4Maui -Version 1.4.0
<PackageReference Include="Raygun4Maui" Version="1.4.0" />
paket add Raygun4Maui --version 1.4.0
#r "nuget: Raygun4Maui, 1.4.0"
// Install Raygun4Maui as a Cake Addin #addin nuget:?package=Raygun4Maui&version=1.4.0 // Install Raygun4Maui as a Cake Tool #tool nuget:?package=Raygun4Maui&version=1.4.0
Raygun4Maui
Raygun's Crash Reporting provider for .NET MAUI
Installation
Step 1 - Install Raygun4Maui
NuGet Package manager
The best way to install Raygun is to use the NuGet package manager. Right-click on your project and select "Manage NuGet Packages....". Navigate to the Browse tab, then use the search box to find Raygun4Maui and install it.
.NET Cli
To install the latest version:
dotnet add package Raygun4Maui
Alternatively, you can specify a version tag to install a specific version of the package. See Raygun4Maui NuGet Gallery page for information on available versions.
dotnet add package Raygun4Maui --version 1.2.1
Step 2 - Add Raygun4Maui to your MauiApp builder
Import the module by:
using Raygun4Maui;
To activate sending of unhandled exceptions and logs to Raygun, you must add Raygun4Maui to your MauiApp builder. To do so, open your main MauiProgram class (MauiProgram.cs) and change the CreateMauiApp
method by adding the AddRaygun4Maui
extension method:
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
...
.AddRaygun4Maui("paste_your_api_key_here");
Additional configuration
The AddRaygun4Maui
extension method contains an overloaded method that takes a RaygunMauiSettings
options object. This extends RaygunSettings
from Raygun4Net.
RaygunMauiSettings supports the following configurations:
- Any configuration available in the Raygun4Net
RaygunSettings
, such asApiKey
. SendDefaultTags
(defaulted totrue
) adds the Log Level (e.g., Severe, Warning, etc.) and the Build Platform (e.g., Windows, Android, iOS, etc.) to reports and logs sent to Raygun.SendDefaultCustomData
(defaulted totrue
) adds all available information in the uncaught exception as custom data on the crash report sent to Raygun.MinLogLevel
andMaxLogLevel
that specify the range of logging levels to be sent to Raygun.
To use these additional configurations, create and initialize a new RaygunMauiSettings
object as follows:
Raygun4MauiSettings raygunMauiSettings = new Raygun4MauiSettings {
ApiKey = "paste_your_api_key_here",
SendDefaultTags = true, // defaults to true
SendDefaultCustomData = true, // defaults to true
MinLogLevel = LogLevel.Debug, // defaults to true
MaxLogLevel = LogLevel.Critical // defaults to true
};
Then add Raygun4Maui to your MauiApp builder. This time, passing in the RaygunMauiSettings
object instead of the API key directly:
builder
.UseMauiApp<App>()
...
.AddRaygun4Maui(raygunMauiSettings);
Usage
Unhandled exceptions will be sent to Raygun automatically.
Raygun4Maui stores an instance of a RaygunMauiClient
object that is initialized by the Maui builder, this can be accessed through the following code:
RaygunMauiClient.Current
This client extends the Raygun4Net.NetCore RaygunClient
, as a result any features supported by the Raygun4Net.NetCore Client are supported here.
Manually sending exceptions
Raygun4Maui automatically sends unhandled exceptions. For manual sending, use Send
or SendInBackground
methods, as shown below:
try {
// Code that may fail
} catch (Exception e) {
RaygunMauiClient.Current.SendInBackground(e);
//or
RaygunMauiClient.Current.Send(e);
}
An exception needs to be thrown in order for its stack trace to be populated. If the exception is created manually no stack trace data is collected.
Other examples
For additional examples on how to use the RaygunMauiClient
object refer to the Raygun4Net.NetCore documentation
ILogger logging
Raygun4Maui will automatically send any logger logs to Raygun.
To make a log entry, obtain the reference to the ILogger services that your MAUI app maintains:
ILogger logger = Handler.MauiContext.Services.GetService<ILogger<MainPage>>();
You may now use the appropriate ILogger log method from the logger object. This uses the same RaygunMauiClient
object accessible from RaygunMauiClient.Current
logger.LogInformation("Raygun4Maui.SampleApp.TestLoggerErrorsSent: {MethodName} @ {Timestamp}", "TestLogInformation", DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"));
logger.LogCritical("Raygun4Maui.SampleApp.TestLoggerErrorsSent: {MethodName} @ {Timestamp}", "TestLogCritical", DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"));
This functionality also allows you to manually catch and log exceptions as shown below:
try {
// Code that throws exception
} catch (Exception e) {
// Example ILogger call. You can use the ILogger method and arguments of your choice.
logger.Log(LogLevel.Error, e, "Exception caught at {Timestamp}", DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"));
}
Platform specific information
Raygun4Maui will automatically collect information specific to the environment the application is being run in. However, there are inconsistencies between certain values across platforms.
- on iOS, Raygun4Maui cannot obtain the device's name. This is a privacy restriction put in place by Apple. If you would like this information to be collected and sent with crash reports you will have to request for permission from apple.
- The
Total physical memory
andAvailable physical memory
properties mean different things across platforms. Below is a table explaining the differences for each platform.
Platform | Total physical memory | Available physical memory |
---|---|---|
Mac | Total installed ram | Total memory available for user-level processes |
iOS | Total installed ram | Total memory available for user-level processes |
Windows | Total installed ram | Total amount of private memory used by the process at the time of the measurement. For a number of reasons this might not be the actual total memory usage |
Android | Total amount of memory that the JVM has allocated for the application | Total amount of free memory that the JVM has available for the application to use |
Development Instructions
To build a local nuget package
- Open Visual Studio 22+
- Open the raygun4maui.sln solution
- Right-click the project and select properties
- Ensure the produce a NuGet package build option is checked
- Under package, update the version name Each time you build your project a .nupkg file will be created in your bin directory. This can then be used by following the following instructions
Installing a local Nuget package
- Acquire the NuGet package or build it as discussed above
- Place it in a local folder of your choice
- Open your MAUI app inside of visual studio 22+
- Navigate to Options > Nuget Package Manager > Package Sources
- Create a new source by adding any name and the path to the folder where you placed the raygun4maui NuGet file
- Right-Click on the project and select Manage Nuget Packages
- Find the NuGet package by typing its name (Mindscape.Raygun4Maui) and, for simplicity, ensure only the newly created custom local package source is selected You can also add local packages using the dotnet cli.
Updating Local Nuget package
- Open your MAUI app inside of visual studio 22+
- Add the new Nuget file to your custom local package folder
- Right-Click on the project and select Manage Nuget Packages
- Find the currently installed version
- The system should automatically detect that a new version is available; click the update iconhttps://github.com/MindscapeHQ/raygun4net/tree/master/Mindscape.Raygun4Net.NetCore
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-android31.0 is compatible. net6.0-ios was computed. net6.0-ios16.1 is compatible. net6.0-maccatalyst was computed. net6.0-maccatalyst16.1 is compatible. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net6.0-windows10.0.19041 is compatible. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- Microsoft.Extensions.Hosting (>= 7.0.1)
- Mindscape.Raygun4Net.NetCore (>= 8.0.0)
-
net6.0-android31.0
- Microsoft.Extensions.Hosting (>= 7.0.1)
- Mindscape.Raygun4Net.NetCore (>= 8.0.0)
-
net6.0-ios16.1
- Microsoft.Extensions.Hosting (>= 7.0.1)
- Mindscape.Raygun4Net.NetCore (>= 8.0.0)
- System.Runtime.InteropServices.NFloat.Internal (>= 6.0.1)
-
net6.0-maccatalyst16.1
- Microsoft.Extensions.Hosting (>= 7.0.1)
- Mindscape.Raygun4Net.NetCore (>= 8.0.0)
- System.Runtime.InteropServices.NFloat.Internal (>= 6.0.1)
-
net6.0-windows10.0.19041
- Microsoft.Extensions.Hosting (>= 7.0.1)
- Mindscape.Raygun4Net.NetCore (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.2.1 | 206 | 11/12/2024 |
2.2.0 | 5,335 | 8/25/2024 |
2.1.2 | 1,126 | 8/6/2024 |
2.1.2-pre-1 | 75 | 8/6/2024 |
2.1.1 | 5,152 | 6/18/2024 |
2.0.1 | 1,871 | 5/9/2024 |
2.0.0 | 4,438 | 4/23/2024 |
1.4.2 | 1,835 | 3/10/2024 |
1.4.1 | 1,253 | 1/18/2024 |
1.4.1-pre-1 | 94 | 12/21/2023 |
1.4.0 | 1,674 | 11/15/2023 |
1.4.0-pre-1 | 114 | 11/10/2023 |
1.3.0 | 176 | 10/25/2023 |
1.2.3-pre-1 | 104 | 10/14/2023 |
1.2.2 | 3,561 | 5/11/2023 |
1.1.0 | 479 | 4/27/2023 |
1.0.0 | 851 | 2/16/2023 |
1.0.0-rc1 | 136 | 2/16/2023 |
Expanded the device information that is collected when a crash is sent to Raygun.
The new information collected is as follows:
- Available physical memory
- Total physical memory
- Processor count
- Architecture
- Device manugacture
- Model
- Current orientation
- Resolution scale
- WindowBoundsWidth
- WindowBoundsHeight