Hallo zusammen,
ich hätte nochmal eine Fragen zum Loggen eines abgesetzten SQL-Befehls.
Zurzeit wird der SQL-Befehl abgesetzt und danach von Hand nochmal zusammengesetzt (Parameter ersetzt) und geloggt. In der Zeit wo der SQL-Befehl zusammengebaut und geloggt wird, muss der Benutzer natürlich noch auf die Response der Web Api warten.
Da im Asp.Net Bereich nicht "sinnlos" Threads erstellt werden sollte, würde ich gerne wissen, ob in diesem Fall ein Producer-Consumer Pattern Sinnvoll wäre.
Ich denke es würde ein Task reichen, der die Queue abarbeiten würde.
Gibt es ein besseres vorgehen, oder habt ich vielleicht sogar ein Beispiel?
Danke
EDIT: Es wird nicht das EF genutzt. Daher wird der Befehl für das Loggen nochmal von Hand zusammengesetzt.
Hi,
schau dir doch mal einen "richtigen" Logger an (z.B. log4net) wie der das macht. Vllt ist er ja für deine Zwecke ausreichend. Du mußt das nicht immer selber bauen.
Hallo Rioma,
ob in diesem Fall ein Producer-Consumer Pattern Sinnvoll wäre.
Ja. Siehe auch Womit Daten loggen für Geräteserver
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Als Hinweis: ich würde aufgrund des hohen Alters und der nur eingeschränkten Fokussierung von log4net Alternativen suchen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Danke erstmal für den Link, ich bin so nochmal auf meinen eignen Thread gestoßen der da verlinkt war.
Ich tendiere zu Nlog. Nlog hat zwar (ohne mich jetzt schon tiefer damit beschäftigt zu haben) die Möglichkeit asynchron zu loggen, mir geht es aber auch um den Teil der vorher passieren muss.
Im Sql Befehl die ganzen Parameter ersetzen, es müssen noch einige sonstige Variablen "zusammengesucht werden" und erst dann kommt das Loggen. Wahrscheinlich sprechen wir nur von einem recht kurzem Zeitverlust, aber mir würde es besser gefallen, würde es eine Zentrale Anlaufstelle geben, in die ich quasi nur meine "Aufträge" einfügen und niemand darauf warten muss.
Ich habe es jetzt so verstanden, dass erstmal nichts gegen mein vorhaben spricht?
Hallo Rioma,
du solltest sowieso so generisch wie möglich vorgehen, dass das deine Anwendung gar nicht wissen soll dass das Loggen per SQL funktioniert, sondern deine Anwendung braucht nur zu wissen, dass sie für das Logging diese Methode aufrufen soll.
Dein Vorgehen passt schon.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"