Microsoft SQL Server 2005 JDBC Driver 支持使用跟踪(或日志记录)协助解决在应用程序中使用 JDBC 驱动程序时出现的问题。若要启用跟踪,JDBC 驱动程序需要使用 java.util.logging 中的日志记录 API,它可提供用于创建 Logger 和 LogRecord 对象的类集。
开发应用程序时,可对 Logger 对象进行调用,它会创建 LogRecord 对象,然后将这些对象传递给 Handler 对象进行处理。Logger 和 Handler 对象都会使用日志记录级别和日志记录筛选器(可选)来规定要处理的 LogRecords。完成日志记录操作后,Handler 对象可选择使用 Formatter 对象发布日志信息。
默认情况下,java.util.logging 框架会将其输出写入到文件中。该输出日志文件必须对 JDBC 驱动程序运行时所在的上下文具有写入权限。
以下各部分介绍了可记录的日志记录级别和类别,并提供了有关如何在应用程序中启用跟踪的信息。
日志记录级别
创建的每条日志消息都有相关联的日志记录级别。日志记录级别决定了日志消息的重要性,这些消息由 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 |
记录 SQLServerXAConnection、SQLServerXAResource 和 SQLServerXADataSource 类中所有 XA 事务的消息。默认日志记录级别为 FINE。 |
|
SQLServerDataSource |
记录 SQLServerDataSource、SQLServerConnectionPoolDataSource 和 SQLServerPooledConnection 类中的消息。默认日志记录级别为 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
logging.properties 文件中的属性。