stackify / logger
Stackify 为 PHP 提供日志和错误处理
Requires
- php: >= 7.1.0
- guzzlehttp/psr7: ^1.9.1 || ^2.4.5
- php-http/message: ^1.7
- php-http/message-factory: ^1.1
- php-http/socket-client: ^1.4 | ^2.0
- psr/http-message: ^1.0
- psr/log: ^1.0 | ^2.0 | ^3.0
Requires (Dev)
- phpunit/php-timer: ^1.0.6
- phpunit/phpunit: ^5
This package is not auto-updated.
Last update: 2024-09-23 14:27:23 UTC
README
Stackify PHP Logger
独立的 Stackify PHP PSR-3 日志记录器。
- 错误和日志概述: http://support.stackify.com/errors-and-logs-overview/
- 免费试用: http://www.stackify.com/sign-up/
PHP 日志框架集成
- Monolog 处理器: https://github.com/stackify/stackify-log-monolog
- log4php 追加器: https://github.com/stackify/stackify-log-log4php
安装
使用 composer require stackify/logger
安装最新版本
要求
- Stackify PHP Logger ^2.0 与 PHP 7.1 或更高版本兼容。
- Stackify PHP Logger ^1.0 与 PHP 5.3 或更高版本兼容。
使用 Linux 代理进行安装
这是推荐的安装选项,提供最佳的日志性能。
use Stackify\Log\Standalone\Logger; $logger = new Logger('application_name', 'environment_name');
不使用 Linux 代理进行安装
此选项不需要安装 Stackify 代理,因为它直接将数据发送到 Stackify 服务。它批量收集日志条目,使用 exec
函数调用 curl,并立即将数据发送到后台 [exec('curl ... &')
]。这将对应用程序的性能影响最小,但需要在 PHP 脚本内部调用 exec
的权限,并且在出现任何网络问题时可能会导致数据丢失。此传输方法在 Windows 上不适用。要配置 ExecTransport,需要传递环境名称和 API 密钥(许可证密钥)
use Stackify\Log\Transport\ExecTransport; use Stackify\Log\Standalone\Logger; $transport = new ExecTransport('api_key'); $logger = new Logger('application_name', 'environment_name', $transport);
可选设置
代理
- ExecTransport 支持通过代理发送数据。使用 libcurl 格式 指定代理:
<[协议://][用户:密码@]代理主机[:端口]>
$transport = new ExecTransport($apiKey, ['proxy' => 'https://55.88.22.11:3128']);
Curl 路径
- 指定 ExecTransport 的
curl
目标路径可能很有用。默认情况下,此选项设置为 'curl'。
$transport = new ExecTransport($apiKey, ['curlPath' => '/usr/bin/curl']);
日志服务器环境变量
- 可以将服务器环境变量添加到错误日志消息元数据中。 注意: 这将记录所有系统环境变量;如果以这种方式存储敏感信息(如密码或密钥),请勿启用。
$logger = new Logger('application_name', 'environment_name', $transport, true);
配置设置
- 这允许用户覆盖日志器的默认设置(隐藏请求变量、会话、Cookie 或更新连接属性到不同的传输等。)
- 注意: 默认情况下,捕获原始 POST 数据
(例如 file_get_contents("php://input"))
和$_POST
变量是禁用
的。- 要启用,可以将以下选项设置为
true
CapturePostVariables
-布尔型
- 捕获$_POST
变量CaptureRawPostData
-布尔型
- 捕获php://input
流数据(例如 file_get_contents("php://input"))
$config = array( 'CapturePostVariables' => true, 'CaptureRawPostData' => true, ... );
- 要启用,可以将以下选项设置为
- 注意: 对于
白名单/黑名单
设置。任何为假
的内容(null
、false
、array()
等. - 参考php empty 函数检查)将被视为不跟踪
- 不会处理任何变量数据。
日志器级别
$config = array( 'CaptureServerVariables' => false, 'CaptureServerVariablesWhitelist' => '*', 'CaptureServerVariablesBlacklist' => 'REMOTE_ADDR,SERVER_ADDR', ... ); $logger = new Logger('application_name', 'environment_name', $transport, true, $config);
传输级别
- 这适用于所有传输
(ExecTransport, CurlTransport, AgentTransport, AgentSocketTransport)
$config = array( 'CaptureServerVariables' => false, 'CaptureServerVariablesWhitelist' => '*', 'CaptureServerVariablesBlacklist' => 'REMOTE_ADDR,SERVER_ADDR', ... ); $transport = new ExecTransport($apiKey, [ 'config' => $config ]);
可用选项
服务器变量
CaptureServerVariables
-布尔型
- 捕获$_SERVER
变量CaptureServerVariablesWhitelist
-数组
或以逗号分隔的字符串
- 白名单$_SERVER
属性CaptureServerVariablesBlacklist
-数组
或以逗号分隔的字符串
- 隐藏$_SERVER
属性(例如attribute => 'X-MASKED-X'
)
获取变量
CaptureGetVariables
-布尔值
- 捕获$_GET
变量CaptureGetVariablesWhitelist
-数组
或以逗号分隔的字符串
- 白名单$_GET
属性CaptureGetVariablesBlacklist
-数组
或以逗号分隔的字符串
- 隐藏$_GET
属性(例如attribute => 'X-MASKED-X'
)
POST 变量
CapturePostVariables
-布尔型
- 捕获$_POST
变量CapturePostVariablesWhitelist
-数组
或以逗号分隔的字符串
- 白名单$_POST
属性CapturePostVariablesBlacklist
-数组
或以逗号分隔的字符串
- 隐藏$_POST
属性(例如attribute => 'X-MASKED-X'
)
会话变量
CaptureSessionVariables
-布尔值
- 捕获$_SESSION
变量CaptureSessionVariablesWhitelist
-数组
或以逗号分隔的字符串
- 白名单$_SESSION
属性CaptureSessionVariablesBlacklist
-数组
或以逗号分隔的字符串
- 隐藏$_SESSION
属性(例如attribute => 'X-MASKED-X'
)
错误头信息
CaptureErrorHeaders
-布尔值
- 捕获在$_SERVER
变量中可用的HEADER
属性CaptureErrorHeadersWhitelist
-数组
或以逗号分隔的字符串
- 白名单$_SERVER
中的HEADER
属性CaptureErrorHeadersBlacklist
-数组
或以逗号分隔的字符串
- 隐藏$_SERVER
中的HEADER
属性(例如attribute => 'X-MASKED-X'
)
错误Cookies
CaptureErrorCookies
-布尔值
- 捕获$_COOKIE
变量CaptureErrorCookiesWhitelist
-数组
或以逗号分隔的字符串
- 白名单$_COOKIE
属性CaptureErrorCookiesBlacklist
-数组
或以逗号分隔的字符串
- 隐藏$_COOKIE
属性
捕获原始POST数据
CaptureRawPostData
-布尔型
- 捕获php://input
流数据(例如 file_get_contents("php://input"))
调试设置
Debug
-布尔值
- 在记录器中启用 DEBUGDebugLogPath
-字符串
- 调试或错误期间生成的日志文件的合格路径
代理传输设置
Protocol
-字符串
- 协议可以是tcp
或udp
Host
-字符串
- 服务器主机名Port
-数字
- 端口SocketTimeoutConnect
-数字
- 连接请求超时SocketTimeoutWrite
-数字
- 连接写入超时SocketMaxConnectAttempts
-数字
- 连接尝试次数
代理套接字传输设置
DomainSocketPath
-字符串
- Stackify Agent unix 套接字路径
API或Curl执行套接字传输设置
ApiBaseUrl
-字符串
- Stackify API基本URLApiCallLogsEndpoint
-字符串
- Stackify API调用日志端点ApiMaxTimeout
-数字
- Stackify API调用最大超时ApiVersionHeader
-字符串
- Stackify API版本头
故障排除
如果传输不起作用,请尝试查看 vendor\stackify\logger\src\Stackify\debug\log.log
文件(如果它可供写入)。错误也会写入全局PHP 错误日志。请注意,ExecTransport根本不会产生任何错误,但您可以将其切换到调试模式
$transport = new ExecTransport($apiKey, ['debug' => true]);
您也可以将其设置为 Logger
级别。设置 Debug
和 DebugLogPath
$config = array( 'DebugLogPath' => '/path/to/log.log', 'Debug' => true ); $logger = new Logger('application_name', 'environment_name', $transport, true, $config);
真实用户监控(RUM)
真实用户监控会在脚本标签中注入 RUM JS,该标签负责捕获浏览器中 http 请求的信息。这种方法是手动的,需要配置。
用户体验度量(RUM) - 设置
/** Requires composer **/ $applicationName = 'Your Application Name'; $environment = 'YourEnvironment'; $rumKey = 'YourRumKey'; \Stackify\Utils\Rum::getInstance()->setupConfiguration( $applicationName, $environment, $rumKey );
用户体验度量(RUM) - 应用程序
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <?php echo \Stackify\Utils\Rum::getInstance()->insertRumScript(); ?> <title>Title</title> </head> ...
许可证
版权所有 2019 Stackify, LLC。
本软件遵循Apache License,版本2.0(以下简称“许可证”);除非符合许可证或书面同意,否则不得使用此文件。您可以在以下地址获得许可证副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”提供,不提供任何明示或暗示的保证或条件。有关许可证具体规定的权限和限制,请参阅许可证。