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

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - 编程 » .NET 应用程序编程 » SQL Anywhere .NET 数据提供程序

 

.NET 跟踪支持

SQL Anywhere .NET 数据提供程序支持使用 .NET 跟踪功能进行跟踪。Windows Mobile 上不支持跟踪。

缺省情况下,跟踪功能被禁用。要启用跟踪功能,请在应用程序的配置文件中指定跟踪源。

以下是配置文件的一个示例:



<?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>

配置文件中引用了上述四种类型的跟踪监听器。

  • ConsoleTraceListener   跟踪或调试输出将被定向到标准输出或标准错误流。使用 Microsoft Visual Studio 时,输出将显示在 [Output] 窗口中。

  • DefaultTraceListener   此监听器将以名称 "Default" 自动添加到 Debug.Listeners 和 Trace.Listeners 集合中。跟踪或调试输出将被定向到标准输出或标准错误流。使用 Microsoft Visual Studio 时,输出将显示在 [Output] 窗口中。要避免 ConsoleTraceListener 产生重复输出,可删除此监听器。

  • EventLogTraceListener   跟踪或调试输出将被定向到在 [initializeData] 选项中标识的 [EventLog]。在本示例中,事件日志名为 MyEventLog。向系统事件日志写入流需要管理员权限,不推荐使用此方法调试应用程序。

  • TextWriterTraceListener   跟踪或调试输出将被定向到 TextWriter,它可将流写入到在 [initializeData] 选项中标识的文件。

要禁用跟踪上述任何跟踪监听器,请在 [<listeners>] 下删除相应的 [add] 条目。

跟踪配置信息位于应用程序的项目文件夹下的 App.config 文件中。如果不存在该文件,可使用 Visual Studio 进行创建并添加到项目,方法是选择 [Add] » [New Item],然后选择 [Application Configuration File]。

可为任何监听器指定的 [traceOutputOptions] 如下:

  • Callstack   编写由 Environment.StackTrace 属性的返回值表示的调用堆栈。

  • DateTime   编写日期和时间。

  • LogicalOperationStack   编写由 CorrelationManager.LogicalOperationStack 属性的返回值表示的逻辑操作堆栈。

  • None   不编写任何元素。

  • ProcessId   编写由 Process.Id 属性的返回值表示的过程标识。

  • ThreadId   编写由当前线程的 Thread.ManagedThreadId 属性的返回值表示的线程标识。

  • Timestamp   编写由 System.Diagnostics.Stopwatch.GetTimeStamp 方法的返回值表示的时间戳。

之前显示的示例配置文件仅用于为 TextWriterTraceListener 指定跟踪输出选项。

可通过设置特定的跟踪选项来限制跟踪的内容。缺省情况下,所有值为数字的跟踪选项设置均为 0。可设置的跟踪选项包括:

  • SASourceSwitch   SASourceSwitch 可采用以下任一值。如果设置为 Off,则不进行跟踪。

    • Off   不允许任何事件通过。

    • Critical   只允许重要事件通过。

    • Error   允许重要事件和错误事件通过。

    • Warning   允许重要事件、错误事件和警告事件通过。

    • Information   允许重要事件、错误事件、警告事件和信息事件通过。

    • Verbose   允许重要事件、错误事件、警告事件、信息事件和详细事件通过。

    • ActivityTracing   允许停止事件、开始事件、暂停事件、传输事件和恢复事件通过。

    • All   允许所有事件通过。

    以下为示例设置。

    <add name="SASourceSwitch" value="Error"/>

  • SATraceAllSwitch   将启用所有跟踪选项。您无需再设置任何其它选项,因为已选择了所有的选项。如果选择此选项,则无法禁用单独的选项。例如,以下语句将不会禁用异常跟踪。
    <add name="SATraceAllSwitch" value="1" />
    <add name="SATraceExceptionSwitch" value="0" />

  • SATraceExceptionSwitch   记录所有异常。跟踪消息具有以下形式。
    <Type|ERR> message='message_text'[ nativeError=error_number]

    仅当具有 SAException 对象时,才会显示 nativeError=error_number 文本。

  • SATraceFunctionSwitch   记录所有进入/退出函数作用域的操作。跟踪消息具有以下形式之一。
    enter_nnn <sa.class_name.method_name|API> [object_id#][parameter_names]
    leave_nnn

    nnn 是一个整数,它表示范围嵌套级别 1、2、3、……可选的 parameter_names 是由空格分隔的参数名列表。

  • SATracePoolingSwitch   记录所有连接池。跟踪消息具有以下形式之一。
    <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   记录所有属性设置和检索。跟踪消息具有以下形式之一。
    <sa.class_name.get_property_name|API> object_id#
    <sa.class_name.set_property_name|API> object_id#

有关详细信息,请参见 [external link] http://msdn.microsoft.com/zh-cn/library/ms971550.aspx 的 "Tracing Data Access"。


配置用于跟踪的 Windows 应用程序