Integrating with Blazor Server application
Use Rollbar from within a Blazor Server
Working Sample
For the working sample, please look here.
Recommended Rollbar Modules/Packages
Whenever you are trying to integrate Rollbar.NET SDK into an existing Blazor Server based application, the most optimal way is to do it via our Rollbar.NetCore.AspNet module. It will also bring in the required dependencies that are Rollbar core module/package and Rollbar.NetPlatformExtensions module/package:
dotnet add package Rollbar.NetCore.AspNet
Integrating Rollbar Within Asp.Net Core Built-In Logging Infrastructure and Using the Rollbar Middleware
Modify Startup.cs
file like so (all 4 steps):
//...
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Rollbar;
using Rollbar.NetCore.AspNet;
//...
public class Startup
{
//...
public void ConfigureServices(IServiceCollection services)
{
// STEP.1 - enable Http Context Accessor:
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
// STEP.2 - Setup Rollbar Infrastructure:
ConfigureRollbarInfrastructure();
// STEP.3 - Add Rollbar logger with properly configured log level filter:
services.AddRollbarLogger(loggerOptions =>
{
loggerOptions.Filter =
(loggerName, loglevel) => loglevel >= LogLevel.Trace;
});
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddSingleton<WeatherForecastService>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
// STEP.4 - Use Rollbar middleware:
app.UseRollbarMiddleware();
// Any other middleware component intended to be "monitored" by Rollbar middleware
// go below this line:
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
}
// STEP.2 - Setup Rollbar Infrastructure:
private void ConfigureRollbarInfrastructure()
{
RollbarInfrastructureConfig config = new RollbarInfrastructureConfig(
RollbarSamplesSettings.AccessToken,
RollbarSamplesSettings.Environment
);
RollbarDataSecurityOptions dataSecurityOptions = new RollbarDataSecurityOptions();
dataSecurityOptions.ScrubFields = new string[]
{
"url",
"method",
};
config.RollbarLoggerConfig.RollbarDataSecurityOptions.Reconfigure(dataSecurityOptions);
RollbarInfrastructure.Instance.Init(config);
// Optionally:
RollbarInfrastructure.Instance.QueueController.InternalEvent += OnRollbarInternalEvent;
}
// STEP.2 - Setup Rollbar Infrastructure:
private static void OnRollbarInternalEvent(object sender, RollbarEventArgs e)
{
Console.WriteLine(e.TraceAsString());
RollbarApiErrorEventArgs apiErrorEvent = e as RollbarApiErrorEventArgs;
if(apiErrorEvent != null)
{
//TODO: handle/report Rollbar API communication error event...
return;
}
CommunicationEventArgs commEvent = e as CommunicationEventArgs;
if(commEvent != null)
{
//TODO: handle/report Rollbar API communication event...
return;
}
CommunicationErrorEventArgs commErrorEvent = e as CommunicationErrorEventArgs;
if(commErrorEvent != null)
{
//TODO: handle/report basic communication error while attempting to reach Rollbar API service...
return;
}
InternalErrorEventArgs internalErrorEvent = e as InternalErrorEventArgs;
if(internalErrorEvent != null)
{
//TODO: handle/report basic internal error while using the Rollbar Notifier...
return;
}
}
}
Updated about 1 year ago