Der SQL Anywhere-.NET-Provider unterstützt die Protokollierung mit der .NET -Protokollierungsfunktion. Beachten Sie, dass die Protokollierung unter Windows Mobile nicht unterstützt wird.
Standardmäßig ist die Protokollierung deaktiviert. Um sie zu aktivieren, geben Sie die Protokollierungsquelle in der Konfigurationsdatei der Anwendung an. Beispiel einer Konfigurationsdatei:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <sources> <source name="iAnywhere.Data.SQLAnywhere" switchName="SASourceSwitch" switchType="System.Diagnostics.SourceSwitch"> <listeners> <add name="ConsoleListener" type="System.Diagnostics.ConsoleTraceListener"/> <add name="EventListener" type="System.Diagnostics.EventLogTraceListener" initializeData="MyEventLog"/> <add name="TraceLogListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="myTrace.log" traceOutputOptions="ProcessId, ThreadId, Timestamp"/> <remove name="Default"/> </listeners> </source> </sources> <switches> <add name="SASourceSwitch" value="All"/> <add name="SATraceAllSwitch" value="1" /> <add name="SATraceExceptionSwitch" value="1" /> <add name="SATraceFunctionSwitch" value="1" /> <add name="SATracePoolingSwitch" value="1" /> <add name="SATracePropertySwitch" value="1" /> </switches> </system.diagnostics> </configuration> |
Es gibt vier Arten von Trace-Listener, die in der oben gezeigten Konfigurationsdatei zu sehen sind.
ConsoleTraceListener Protokollierung oder Fehlersuchausgabe wird an die Standardausgabe oder den STDERR-Datenstrom geleitet. Wenn Sie Microsoft Visual Studio verwenden, erscheint die Ausgabe im Ausgabe-Fenster.
DefaultTraceListener Dieser Listener wird mit dem Namen "Default" automatisch den Debug.Listeners- und Trace.Listeners-Sammlungen hinzugefügt. Protokollierung oder Fehlersuchausgabe wird an die Standardausgabe oder den STDERR-Datenstrom geleitet. Wenn Sie Microsoft Visual Studio verwenden, erscheint die Ausgabe im Ausgabe-Fenster. Um ein Duplizierung des von ConsoleTraceListener produzierten Ausgabe zu vermeiden, wurde dieser Listener entfernt.
EventLogTraceListener Protokollierung oder Fehlersuchausgabe wird an ein EventLog geleitet, das in der Option initializeData definiert wird. In dem Beispiel heißt die Ereignisanzeige MyEventLog. Schreiben in das Systemereignisprotokoll erfordert keine Administratorberechtigungen und ist keine empfohlene Methode für die Fehlersuche in Anwendungen.
TextWriterTraceListener Protokollierung oder Fehlersuchausgabe wird an einen TextWriter geleitet, der den Datenstrom in die Datei schreibt, die in der Option initializeData festgelegt ist.
Um die Protokollierung in einem der oben beschriebenen Trace-Listener zu deaktivieren, entfernen Sie den entsprechenden add-Eintrag aus <listeners>.
Die Trace-Konfigurationsinformationen werden in den Projektordner der Anwendung in der Datei App.config gespeichert. Wenn die Datei nicht existiert, kann sie mit Visual Studio erstellt werden: Hinzufügen » Neues Element, Auswahl von Anwendungskonfigurationsdatei.
traceOutputOptions können für alle Listener festgelegt werden und enthalten:
Callstack Schreibt den Aufruf-Stack, der vom Rückgabewert der Eigenschaft Environment.StackTrace repräsentiert wird.
DateTime Schreibt das Datum und die Uhrzeit.
LogicalOperationStack Schreibt den Stack für die logischen Vorgänge, der vom Rückgabewert der Eigenschaft CorrelationManager.LogicalOperationStack repräsentiert wird.
Keine Schreibt keine Elemente.
ProcessId Schreibt die Prozess-ID, die vom Rückgabewert der Eigenschaft Process.Id repräsentiert wird.
ThreadId Schreibt die Thread-ID, die vom Rückgabewert der Eigenschaft Thread.ManagedThreadId für den aktuellen Thread repräsentiert wird.
Zeitstempel Schreibt den Zeitstempel, der vom Rückgabewert der Methode System.Diagnostics.Stopwatch.GetTimeStamp repräsentiert wird.
Die Beispielkonfigurationsdatei (siehe oben) legt die Trace-Ausgabeoptionen nur für TextWriterTraceListener fest.
Mit spezifischen Protokolloptionen können Sie begrenzen, welche Elemente protokolliert werden. Standardmäßig sind alle Protokolloptionen auf 0 gesetzt. Folgende Protokolloptionen sind verfügbar:
SATraceAllSwitch Der Parameter zum Protokollieren aller Elemente. Wenn diese Option angegeben wird, sind alle Protokolloptionen aktiviert. Es ist in diesem Fall nicht erforderlich, weitere Optionen anzugeben, da damit alle ausgewählt werden. Wenn Sie diese Option auswählen, können Sie keine einzelnen Optionen deaktivieren. Es ist z.B. nicht möglich, die Protokollierung von Ausnahmebedingungen mit folgenden Anweisungen zu deaktivieren.
<add name="SATraceAllSwitch" value="1" /> <add name="SATraceExceptionSwitch" value="0" /> |
SATraceExceptionSwitch Alle Ausnahmebedingungen werden protokolliert. Protokollmeldungen haben das folgende Format.
<Type|ERR> message='message_text'[ nativeError=error_number] |
Der Text nativeError=error_number wird nur angezeigt, wenn ein SAException-Objekt vorhanden ist.
SATraceFunctionSwitch Alle Eintritte/Austritte des Funktionsbereichs werden protokolliert. Protokollmeldungen können die folgenden Formate haben.
enter_nnn <sa.class_name.method_name|API> [object_id#][parameter_names] leave_nnn |
Hierbei steht "nnn" für eine Ganzzahl, die die Verschachtelungsebene 1, 2, 3 usw. des Bereichs repräsentiert. Der optionale Parameter parameter_names ist eine Liste der durch Leerzeichen getrennten Parameternamen.
SATracePoolingSwitch Alle Verbindungspools werden protokolliert. Protokollmeldungen können die folgenden Formate haben.
<sa.ConnectionPool.AllocateConnection|CPOOL> connectionString='connection_text' <sa.ConnectionPool.RemoveConnection|CPOOL> connectionString='connection_text' <sa.ConnectionPool.ReturnConnection|CPOOL> connectionString='connection_text' <sa.ConnectionPool.ReuseConnection|CPOOL> connectionString='connection_text' |
SATracePropertySwitch Alle Einstellungen und Abrufe von Eigenschaften werden protokolliert. Protokollmeldungen können die folgenden Formate haben.
<sa.class_name.get_property_name|API> object_id# <sa.class_name.set_property_name|API> object_id# |
Sie können die Anwendungsprotokollierung unter Verwendung des TableViewer-Beispiels testen.
Starten Sie Visual Studio und öffnen Sie die TableViewer-Projektdatei (TableViewer.sln) unter %SQLANYSAMP12%\Samples\SQLAnywhere\ADO.NET\TableViewer.
Mit Visual Studio erstellen Sie die Datei App.config der Anwendung und fügen eine Kopie der oben gezeigten Konfigurationseinstellung in diese Datei ein. Entfernen Sie den EventLogTraceListener-Eintrag.
Erstellen Sie die Anwendung.
Klicken Sie auf Debuggen » Debuggen starten.
Wenn die Ausführung der Anwendung abgeschlossen ist, wird unter bin\Debug\myTrace.log eine Ausgabedatei mit dem Trace-Protokoll gespeichert. Sie sehen außerdem ein Trace-Protokoll im Fenster Ausgabe von Visual Studio.
Die Protokollierung wird unter Windows Mobile nicht unterstützt.
Weitere Hinweise finden Sie unter "Tracing Data Access" unter http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnadonet/html/tracingdataaccess.asp.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |