Ich habe die Verbindungszeichenfolge überprüft (ich habe sie vom Server-Explorer erhalten).
Ich habe den Befehl Text in log4net config überprüft.
Ich habe die Datenbankberechtigungen überprüft (integrierte Sicherheit ist in Ordnung und funktioniert außerhalb der log4net-Klasse).
Ich habe die konfigurierte Eigenschaft des Repository überprüft (es ist konfiguriert, es findet die Konfigurationsdatei in Ordnung).
Ich habe auch überprüft, dass die in der Konfigurationsdatei definierten Felder mit den Attributen (Feldgröße usw.) der Tabelle in der Datenbank übereinstimmen.
Irgendwelche Ideen?
Beim Debuggen scheint es die richtigen Methoden zu allen richtigen Zeiten zu treffen, ohne dass Ausnahmen auftreten.
%Vor%Es schreibt an keinen appender.
Richtig, nachdem ich mir stundenlang die Haare ausgezogen habe - ich habe es geknackt.
Diese Zeile:
%Vor%Benötigt vor jedem Logging (gut, so früh wie möglich in der App). Das ist es. Das war alles was es brauchte. Dies ist eines dieser Probleme, bei denen ich extrem erleichtert, aber gleichzeitig frustriert bin.
Ich würde empfehlen Log4Net Debugging zu aktivieren:
%Vor%Das kann Sie in die richtige Richtung weisen, wenn hinter den Kulissen ein Fehler auftritt. Die Ausgabe wird an die Konsolenausgabe in der IDE oder in der Befehlszeile geleitet.
Versuchen Sie, log4net selbst zu loggen, vielleicht hilft es dabei:
%Vor%nach dem ADONetAppender Konfigurationsbeispiel:
%Vor%Dies verwendet das parametrisierte ADO.NET-Abfrageformat, daher müssen Sie diese Syntax verwenden. Darüber hinaus möchten Sie möglicherweise keine integrierte Sicherheit für die Datenbankverbindung verwenden (insbesondere wenn Sie eine Website oder einen Dienst ausführen). Für Ihren Datei-Appender empfehle ich einen vollständig qualifizierten Pfad und stelle sicher, dass er vom Logger beschreibbar ist.
Ich nehme an, Sie haben die Tabelle bereits in der angegebenen Datenbank erstellt?
HINWEIS Ich empfehle, den Trace-Appender festzulegen Debug-Modus auch, um sicherzustellen, dass Sie tatsächlich Sachen protokollieren.
Ich bin gestern auf ein ähnliches Problem gestoßen, Log4Net schrieb gerade nicht in die Datenbank. Ich habe die Konfiguration von einem anderen vorhandenen Appender kopiert, der erfolgreich Protokolle in die Datenbank schreibt. Meine Lösung bestand darin, SQL Server Profiler auszuführen, um herauszufinden, was gerade geschah. Profiler zeigte, dass die INSERT-Anweisungen von Log4Net gesendet wurden, aber auf der SQL Server-Seite fehlschlugen. Das manuelle Ausführen der INSERT-Anweisung in SQL Server Management Studio zeigte mir genau, was daran falsch war. In meinem Fall wurde NULL in eine Spalte eingefügt, die NULL nicht akzeptierte.
Fügen Sie diese Zeile in der Datei AssemblyInfo.cs
hinzu %Vor%Wie im offiziellen Konfigurationshandbuch heißt es: "Die log4net-Konfiguration kann mithilfe von Attributen auf Baugruppenebene anstatt programmgesteuert konfiguriert werden", was ich als einen klareren Ansatz empfand. Manche Leute finden meine Antwort vielleicht einfacher.
Quelle: Ссылка
Tags und Links sql-server c# database logging log4net