Laden...

SQL Loggen Asp.net Web API

Erstellt von Rioma vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.126 Views
R
Rioma Themenstarter:in
228 Beiträge seit 2013
vor 8 Jahren
SQL Loggen Asp.net Web API

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.

W
955 Beiträge seit 2010
vor 8 Jahren

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.

6.911 Beiträge seit 2009
vor 8 Jahren

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!"

16.807 Beiträge seit 2008
vor 8 Jahren

Als Hinweis: ich würde aufgrund des hohen Alters und der nur eingeschränkten Fokussierung von log4net Alternativen suchen.

R
Rioma Themenstarter:in
228 Beiträge seit 2013
vor 8 Jahren

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?

6.911 Beiträge seit 2009
vor 8 Jahren

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!"

R
Rioma Themenstarter:in
228 Beiträge seit 2013
vor 8 Jahren

Alles klar, danke euch

74 Beiträge seit 2014
vor 8 Jahren

Zum Loggen könntest du Serilog ausprobieren. Damit kannst du nicht einfach nur Strings loggen sondern komplette Objekte. Das Schreiben passiert dort ebenfalls asynchron, also blockiert da nichts.