Microsoft SQL Server 2005 JDBC Driver 支持使用跟踪(或日志记录)协助解决在应用程序中使用 JDBC 驱动程序时出现的问题。若要启用跟踪,JDBC 驱动程序需要使用 java.util.logging 中的日志记录 API,它可提供用于创建 LoggerLogRecord 对象的类集。

注意: 对于 JDBC 驱动程序中包含的本地组件 (sqljdbc_xa.dll),可通过内置诊断 (BID) 框架启用跟踪。有关 BID 的信息,请参阅 SQL Server 2005 中的数据访问跟踪

开发应用程序时,可对 Logger 对象进行调用,它会创建 LogRecord 对象,然后将这些对象传递给 Handler 对象进行处理。LoggerHandler 对象都会使用日志记录级别和日志记录筛选器(可选)来规定要处理的 LogRecords。完成日志记录操作后,Handler 对象可选择使用 Formatter 对象发布日志信息。

默认情况下,java.util.logging 框架会将其输出写入到文件中。该输出日志文件必须对 JDBC 驱动程序运行时所在的上下文具有写入权限。

注意: 有关使用各种日志记录对象进行程序跟踪的详细信息,请参阅 Sun Microsystems 网站上的 Java Logging APIs(英文)文档。

以下各部分介绍了可记录的日志记录级别和类别,并提供了有关如何在应用程序中启用跟踪的信息。

日志记录级别

创建的每条日志消息都有相关联的日志记录级别。日志记录级别决定了日志消息的重要性,这些消息由 java.util.logging 中的 Level 类定义。下表逐一介绍了每个可用的日志记录级别。

名称 说明

SEVERE

表示严重失败,此为最高日志记录级别。在 JDBC 驱动程序中,该级别用于报告错误和异常。

WARNING

指示潜在的问题。

INFO

提供信息性消息。

CONFIG

提供配置消息。在 JDBC 驱动程序中,该级别用于作用域内的全局配置设置。

FINE

提供跟踪信息。在 JDBC 驱动程序中,该级别用于大多数日志消息。

FINER

提供详细的跟踪信息。

FINEST

提供非常详细的跟踪信息。此为最低日志记录级别。

OFF

关闭日志记录。

ALL

启用所有消息的日志记录。

日志记录类别

创建 Logger 对象时,必须告知该对象您希望从其中获取日志信息的指定实体或类别。JDBC 驱动程序支持下列日志记录类别。

名称 说明

SQLServerConnection

SQLServerConnection 类中的日志消息。默认日志记录级别为 FINE。

SQLServerStatement

SQLServerStatement 类中的日志消息。默认日志记录级别为 FINE。

TDS.DATA

记录 TDS 消息。该类别会创建非常冗长而详细的消息,并且只有通过将日志记录级别设置为 FINEST 才能启用它。

TDS.TOKEN

记录 TDS 消息。该类别仅记录 TDS 包内的标记,并且不如 TDS.DATA 类别详细。

XA

记录 SQLServerXAConnectionSQLServerXAResourceSQLServerXADataSource 类中所有 XA 事务的消息。默认日志记录级别为 FINE。

SQLServerDataSource

记录 SQLServerDataSourceSQLServerConnectionPoolDataSourceSQLServerPooledConnection 类中的消息。默认日志记录级别为 FINE。

以编程方式启用跟踪

通过创建 Logger 对象并将类别标识为已记录,即可以编程方式启用跟踪。例如,以下代码显示了如何启用 SQL 语句的日志记录:

Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc.SQLServerStatement");
logger.setLevel(Level.FINE);

若要在代码中关闭日志记录,请使用以下代码:

logger.setLevel(Level.OFF);

若要记录所有可用类别,请使用以下代码:

Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc");
logger.setLevel(Level.FINE);

若要禁止记录某个特定类别,请使用以下代码:

Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc.TDS");
logger.setLevel(Level.OFF);

使用 Logging.Properties 文件启用跟踪

除了以编程方式启用跟踪外,还可以使用 logging.properties 文件来启用,该文件可在 Java 运行时环境 (JRE) 安装文件的 lib 目录中找到。该文件可用于设置记录程序和处理程序的默认值,在启用跟踪时会用到这些值。

以下是可在 logging.properties 文件中进行的设置的实例:

   # Specify the handlers to create in the root logger
   # (all loggers are children of the root logger).
   # The following creates two handlers.
   handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler

   # Set the default logging level for the root logger.
   .level = OFF

   # Set the default logging level for new ConsoleHandler instances.
   java.util.logging.ConsoleHandler.level = FINE

   # Set the default logging level for new FileHandler instances.
   java.util.logging.FileHandler.level = OFF

   # Set the default formatter for new ConsoleHandler instances.
   java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

   # Set the default logging level for the logger named ConnectionPool.
   ConnectionPool.level = OFF
注意: 使用 java.util.logging 中的 LogManager 对象可设置 logging.properties 文件中的属性。

另请参见

诊断与 JDBC 驱动程序有关的问题