默认情况下,不会将 Microsoft Drivers for PHP for SQL Server 生成的错误和警告记录到 PHP 系统日志。 本主题讨论如何配置驱动程序日志记录活动。 有关如何配置非特定于驱动程序的 PHP 错误处理设置的详细信息,请参阅 PHP 文档。
使用 PDO_SQLSRV 驱动程序记录活动
PDO_SQLSRV 驱动程序特有的唯一可用日志记录配置,是 php.ini 文件中的 pdo_sqlsrv.log_severity 配置项。
在 php.ini 文件末尾添加以下内容:
[pdo_sqlsrv]
pdo_sqlsrv.log_severity = <number>
log_severity 可以为下列值之一:
| 值 | 说明 |
|---|---|
| 0 | 禁用日志记录(如果未进行任何定义,则为默认值)。 |
| -1 | 指定将记录错误、警告和通知。 |
| 1 | 指定将错误记录到日志中。 |
| 2 | 指定将记录警告。 |
| 4 | 指定将通知记录到日志中。 |
日志记录信息将添加到 phperrors.log 文件。
PHP 在初始化时读取配置文件并将数据存储在缓存中;它还提供一个 API 以更新这些设置并立即使用,然后它将写入配置文件。 此 API 支持应用程序脚本更改设置,即使在 PHP 初始化后也是如此。
使用 SQLSRV 驱动程序记录活动
若要启用日志记录,你可以使用 sqlsrv_configure 函数,或者也可以修改 php.ini 文件。 你可以针对初始化、连接、语句或错误函数记录活动。 你还可以指定是记录错误、警告、通知还是同时记录这三者。
注意
可以在 php.ini 文件中配置日志文件的位置。 有关更多详细信息,请参阅 PHP 文档。
启用日志记录
您可以使用 sqlsrv_configure 函数为 LogSubsystems 设置指定一个值,以启用日志记录。 例如,以下这行代码将驱动程序配置为记录连接活动:
sqlsrv_configure("LogSubsystems", SQLSRV_LOG_SYSTEM_CONN);
下表描述了可用作 LogSubsystems 设置的值的常量:
| 值(括号中为等效整数) | 说明 |
|---|---|
| SQLSRV_LOG_SYSTEM_ALL(-1) | 对所有子系统启用日志记录。 |
| SQLSRV_LOG_SYSTEM_OFF(0) | 禁用日志记录。 这是默认设置。 |
| SQLSRV_LOG_SYSTEM_INIT (1) | 对初始化活动启用日志记录。 |
| SQLSRV_LOG_SYSTEM_CONN (2) | 启用连接活动日志记录。 |
| SQLSRV_LOG_SYSTEM_STMT (4) | 对语句活动启用日志记录。 |
| SQLSRV_LOG_SYSTEM_UTIL (8) | 对错误函数活动(例如 handle_error 和 handle_warning)启用日志记录。 |
您可以通过使用逻辑或运算符 (|) 同时为 LogSubsystems 设置指定多个值。 例如,以下代码行同时对连接和语句活动启用日志记录:
sqlsrv_configure("LogSubsystems", SQLSRV_LOG_SYSTEM_CONN | SQLSRV_LOG_SYSTEM_STMT);
此外,还可以通过在 php.ini 文件中为 LogSubsystems 设置指定一个整数值来启用日志记录。 例如,向 php.ini 文件中的 [sqlsrv] 部分添加以下行将对连接活动启用日志记录:
sqlsrv.LogSubsystems = 2
通过同时添加多个整数值,可以一次指定多个选项。 例如,向 php.ini 文件中的 [sqlsrv] 部分添加以下行将对连接和语句活动启用日志记录:
sqlsrv.LogSubsystems = 6
记录错误、警告和通知
启用日志记录后,必须指定要记录的内容。 你可以记录以下一个或多个类别:错误、警告和通知。 例如,以下代码行指定仅记录警告:
sqlsrv_configure("LogSeverity", SQLSRV_LOG_SEVERITY_WARNING);
注意
LogSeverity 的默认设置为 SQLSRV_LOG_SEVERITY_ERROR。 如果启用了日志记录,但未为 LogSeverity 指定任何设置,将仅记录错误。
下表描述了可用作 LogSeverity 设置的值的常量:
| 值(括号中为等效整数) | 说明 |
|---|---|
| SQLSRV_LOG_SEVERITY_ALL(-1) | 指定将记录错误、警告和通知。 |
| SQLSRV_LOG_SEVERITY_ERROR (1) | 指定将错误记录到日志中。 这是默认设置。 |
| SQLSRV_LOG_SEVERITY_WARNING (2) | 指定将记录警告。 |
| SQLSRV_LOG_SEVERITY_NOTICE (4) | 指定将通知记录到日志中。 |
可以使用逻辑 OR 运算符 (|) 同时为 LogSeverity 设置设置多个值。 例如,以下代码行指定应记录错误和警告:
sqlsrv_configure("LogSeverity", SQLSRV_LOG_SEVERITY_ERROR | SQLSRV_LOG_SEVERITY_WARNING);
注意
为 LogSeverity 设置指定值不会启用日志记录。 你必须通过为 LogSubsystems 设置指定值来启用日志记录,然后通过为 LogSeverity设置值来指定所记录内容的严重性级别。
你还可以在 php.ini 文件中使用整数值来为 LogSeverity 设置指定一个设置。 例如,在 php.ini 文件的 [sqlsrv] 部分中添加以下行,即可只记录警告日志:
sqlsrv.LogSeverity = 2
通过同时添加多个整数值,可以一次指定多个选项。 例如,在 php.ini 文件的 [sqlsrv] 部分添加以下行即可启用错误和警告日志记录:
sqlsrv.LogSeverity = 3