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?
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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?
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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?
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 😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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!
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).
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code