06 51 303 223 info@topulus.com
Topulus App Logger

App Logger

Eenvoud en perfectie bij foutopsporing in Blazor en Xamarin

Om snel en efficiënt fouten op te sporen in je Blazor Apps en (binnenkort ook) in je Xamarin Apps hebben wij in eigen beheer een App Logger ontwikkeld die bij iedere exception snel en gestructureerd inzicht geeft in alle relevante informatie aan zowel de client- als de serverkant en de verbanden tussen die informatie. Geen gepuzzel meer!
Bovendien genereert onze App Logger een heldere, informatieve foutmelding naar de gebruiker.

Onze tool kan veel

Natuurlijk bestaan er al diverse tools voor foutopsporing, waaronder Microsoft Application Insights. Maar wij wilden meer. Dus wij bouwden een tool die ook laat zien:

  • wat de gebruiker deed in de App direct voordat de exceptie optrad;
  • wat de relatie is tussen enerzijds een exceptie in de client (Blazor/Xamarin) en anderzijds een exceptie op de server (ASP.NET);
  • welke exception bij welke gebruiker is opgetreden: met één klik staat alle relevante informatie betreffende die gebruiker in beeld.

Daarnaast toont onze tool een duidelijke foutmelding aan de gebruiker.

Hoe gaat dat zonder onze App Logger

Blazor heeft een ingebouwde standaard implementatie van de ILogger, die alleen de exception toont in de debug window (en dus niet logt!) en de volgende foutmelding toont aan de gebruiker:

Blazor App Logger

Tijdens het debuggen kun je dan zien wat er fout gaat, maar als de fout optreedt bij de gebruiker heb je daar niets aan.

Bovendien willen ontwikkelaars een mogelijkheid om gebruikers duidelijke informatie te geven over een fout die optreedt. Maar geen enkele oplossing biedt die mogelijkheid. Tot nu, want nu is er onze App Logger.

Geen gepuzzel meer

Om erachter te komen of en zo ja welke exceptions er optreden bij de gebruikers is er dus meer nodig.

Wij hebben een ILogger-implementatie gebouwd (die we App Logger hebben genoemd) die de exceptions logt naar een Azure service. Hierbij wordt ook de gebruikers-id gelogd, zodat je per gebruiker kunt zoeken naar fouten. De logger kan tegelijkertijd zowel aan de client-kant (Blazor/Xamarin) als aan de serverkant geïnstalleerd worden, zodat de logging per gebruiker gecombineerd kan worden doorzocht.

Naast exceptions kunnen ook andere events gelogd worden, zoals welke pagina’s een gebruiker bezocht heeft, op welke buttons hij heeft geklikt, enzovoort, net zo gedetailleerd als jij het wilt maken. Zo kan je onderdelen per gebruiker aan- en uitzetten, zodat je bij een lastig op te lossen probleem – uiteraard met toestemming van de gebruiker (privacy!) – de logging laat vastleggen wat die gebruiker deed vlak voordat de fout optrad.

Naast onze App Logger hebben we een Blazor app ontwikkeld waarmee de gelogde exceptions en events op de service geraadpleegd en doorzocht kunnen worden, gegroepeerd per gebruiker. We hebben deze app App Log Reader genoemd.

Duidelijke foutmelding voor de gebruiker

We wilden ook de gebruiker een duidelijke foutmelding kunnen tonen. Daarvoor hebben wij een ILogger-implementatie gemaakt waaraan een IErrorService gekoppeld kan worden die bij een unhandled exception een foutmelding kan tonen (uiteraard nadat de exception gelogd is). Daarbij wordt de content van de MainLayout vervangen door onze veel informatievere popup:

Blazor App Logger

De gebruiker krijgt daarmee een foutnummer en de ontwikkelaar of helpdesk kan daarmee eenvoudig met onze App Log Reader nagaan wat er fout is gegaan. Als er een fout aan de serverkant is opgetreden, wordt dat doorgegeven aan de API, die dan in de exception ook het foutnummer van de server-exception kan opnemen. Dat onze App Logger al deze stukjes informatie combineert is een unieke functie, die heel veel gepuzzel voorkomt bij het zoeken naar de oorzaak van de fout.

Er moet een kleine kanttekening worden geplaatst: als er een fatal exception tijdens het renderen van de pagina optreedt, is Blazor niet altijd in staat om de MainLayout met de foutmelding opnieuw te renderen. In Jip en Janneke taal: als het probleem dat optreedt zo groot is dat de App compleet crasht, dan kan deze natuurlijk geen foutmelding meer tonen. Maar wij weten uit ervaring dat zo’n situatie maar weinig voorkomt. Bovendien: zelfs als dat gebeurt, dan is de exception toch nog altijd eerst gelogd mét de gebruikers-id erbij, zodat de oorzaak met behulp van onze App Log Reader (zoekend op gebruikers-id) zelfs dan zal zijn terug te vinden.

Dat wil ik ook!

Wil jij onze App Logger gebruiken? We zijn ook beschikbaar om je te helpen met de implementatie ervan (of met wat dan ook inzake Blazor). Gun jezelf dit! Laten we samenwerken; bel of mail ons vandaag nog.