Laden...

Welches Loggingframework und wie in grossen (nicht nur ASP.NET Core) Projekten loggen?

Erstellt von JimStark vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.151 Views
JimStark Themenstarter:in
309 Beiträge seit 2020
vor 3 Jahren
Welches Loggingframework und wie in grossen (nicht nur ASP.NET Core) Projekten loggen?

Hi,

bei einem Projekt (ASP.NET Core) möchte ich gerne die jeweiligen Stufen unterschiedlich handhaben, für die normalen Logs (Information, Warnings,...) würde der EventSource reichen.
Allerdings dachte ich bei Error und Critical es zusätzlich in eine Datei zu schreiben die man dem Supporter dann auch zusenden kann. Das würde ja mit NLog alles recht gut funktionieren und ist auch in MS Docs recht gut beschrieben.
Ist es aber vielleicht schlauer man setzt auf dem System gleich z.B. eine MongoDB auf (wäre ja nur ein Docker Container mehr) und nutzt es als Logging DB? Wie wird das in größeren Projekten in der Praxis gemacht?

Zusätzlich würde ich gerne noch protokollieren wenn ein Nutzer etwas an einem Objekt ändert. Der Admin soll das im Adminbereich (im View) auch sehen können, dafür wäre eine Logging-DB wahrscheinlich auch eleganter als eine Loggingfile oder?

16.835 Beiträge seit 2008
vor 3 Jahren

Google mal 30 Sekunden nach ASP.NET Core und Logging und Du wirst Serilog finden.
Wenn Du Dir dann Serilog ein paar Minuten schaust, dann siehst Du, dass mit Hilfe von Sinks hunderte von Endpunkten unterstützt werden.

Zusätzlich würde ich gerne noch protokollieren wenn ein Nutzer etwas an einem Objekt ändert.

Das ist Applikationslogik und fällt unter das User Tracing.
User Tracing und Application Tracing sind zwei paar Stiefel und werden i.d.R. getrennt geloggt.

JimStark Themenstarter:in
309 Beiträge seit 2020
vor 3 Jahren

Hey danke für die Antwort und den Tipp mit Serilog!

Würdest du dann 2 einzelne Logger Instanzen anlegen?
Oder gibts für das Usertracing nochmal extra was besseres?

16.835 Beiträge seit 2008
vor 3 Jahren

Serilog ist primär für das Application Tracing da.

User Logging programmiert man i.d.R. vollständig getrennt; meistens (und sogar oft) in Relation zu den Daten, die getract werden sollen.
Sind also sogar Teil Deines Datenbankdesigns.

JimStark Themenstarter:in
309 Beiträge seit 2020
vor 3 Jahren

Ich habe einen Db-Service mit der alle Datenbankaktionen über EF regelt (AddCustomer, AddOrder, etc.)
Das ist ein eigenes Projekt, d.h. das Userlogging würde nur in dem Projekt ablaufen? Das würde man dann da anstelle von Serilog nehmen?

16.835 Beiträge seit 2008
vor 3 Jahren

Les Dir mal den Unterschied und die Grundlagen von User Logging und Application Tracing durch.
Evtl. hilft Dir auch der Begriff User Activity Monitoring.

Solangsam hab ich Deine halbe Application designed, was eigentlich Deine Aufgabe ist 😉

JimStark Themenstarter:in
309 Beiträge seit 2020
vor 3 Jahren

Bei der nächsten weiß ich es, ich erwähn dich dafür in den Credits 😁

Ich denke du meinst damit ehr die Datenbank direkt so zu designen dass Änderungen darin mit gespeichert werden oder?

Was ich dabei noch gefunden habe:
https://www.c-sharpcorner.com/forums/best-ways-to-track-user-activities-in-my-asp-net-core-app

Das sollte für meine Zwecke wahrscheinlich voll und ganz reichen.
Danke!

16.835 Beiträge seit 2008
vor 3 Jahren

Ich denke du meinst damit ehr die Datenbank direkt so zu designen dass Änderungen darin mit gespeichert werden oder?

Richtig.

Beispiel:

class UserProfileEntity
{
   public virtual ICollection<UserProfileChangeEntity> Changes ..

Die Changes der Profile Entität werden direkt anhängend gespeichert.
Auf diese Weise werden zB. hier im Forum die Post-Edits historisch abgelegt.

Letzten Endes ist das aber Teil des Datenbank-Designs.
Du wirst nicht drum herum kommen Dich mit Konzepten zu beschäftigen, um das passende für Deinen Fall zu finden.

Wir werden Dir das niemals abnehmen (können).