Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » .NET-Anwendungsprogrammierung » SQL Anywhere .NET-Datenprovider

 

.NET - Unterstützung der Protokollierung

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.

 Konfigurieren einer Anwendung für die Protokollierung
  1. Starten Sie Visual Studio und öffnen Sie die TableViewer-Projektdatei (TableViewer.sln) unter %SQLANYSAMP12%\Samples\SQLAnywhere\ADO.NET\TableViewer.

  2. 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.

  3. Erstellen Sie die Anwendung.

  4. 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 [external link] http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnadonet/html/tracingdataaccess.asp.