Kann jemand eine Möglichkeit empfehlen, wie ich die tatsächliche vollständige SQL-Anweisung sehen kann, die mit dieser Bibliothek an MySQL gesendet wird? Der Debug-Logger gibt die Abfrage mit den Parametern aus, zeigt aber die tatsächlichen Parameterwerte als ? Wie unten. Ich versuche, einige Probleme mit Datumsparametern zu debuggen und muss den genauen Parameterwert sehen, den mysql empfängt. Vielen Dank!
Ausgeführter DbCommand (3.887ms) [Parameters=[@__utcDate_0='?', @__AddDays_1='?', @__viewModel_LastName_2='?' (Größe = 8000), @__viewModel_BirthDate_Date_3='?', @__AddDays_4='?'], CommandType='Text', CommandTimeout='30']
Ich weiß, dass dies ein Hack ist, aber Sie können Wireshark verwenden, um zu sehen, was genau an die Datenbank gesendet wird.
Der Grund, warum Sie die parametrisierte Protokollierung im ? Das Format liegt daran, dass der Datenbanktreiber vorbereitete Anweisungen verwendet. Vorbereitete Anweisungen umgehen Parameter auf dem DBMS und verhindern die SQL-Injektion. Die Anweisung wird tatsächlich mit dem ? markiert, und die Parameter werden separat gesendet.
1.1.0-rtm-10002 enthält jetzt die Anweisungsprotokollierung, wenn Debug
oder Info
Protokolle in .NET MVC verwendet werden
Ich kann die Anweisungsprotokollierung nicht finden.
startup.cs Methode konfigurieren:
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
appsetting.json
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug"
}
}
Ausführung:
1.1.1-Vorabversion-10020
@calebloyd
Bitte beachten Sie, dass Sie EnableSensitiveDataLogging() verwenden müssen, um beim Konfigurieren des Kontexts die tatsächlichen Parameterwerte anzuzeigen.