PHP集成Sentry配置

76 篇文章 0 订阅

存在几个允许您配置Raven_Client行为的选项。它们作为构造函数的第二个参数传递,并且应该是键值对的数组:

$client = new Raven_Client($dsn, array(
    'option_name' => 'value',
))

一、其他设置

以下设置可供客户端使用:

name

一个字符串,用于覆盖服务器主机名的默认值。 默认为Raven_Compat :: gethostname()。

tags

要在此上下文中应用于事件的标记数组。 

'tags' => array(
    'php_version' => phpversion(),
)
$client->tags_context(array(
    'php_version' => phpversion(),
));

 release

您的应用程序的版本(例如git SHA)

'release' => MyApp::getReleaseVersion(),
$client->setRelease(MyApp::getReleaseVersion());

environment

运行应用程序的环境。 

'environment' => 'production',
$client->setEnvironment('production');

app_path
应用程序代码的根路径。 

'app_path' => app_root(),
$client->setAppPath(app_root());

excluded_app_paths

要从app_path检测中排除的路径。

'excluded_app_paths' => array(app_root() . '/cache'),
$client->setExcludedAppPaths(array(app_root() . '/cache'));

 prefixes

应从文件名中剥离的前缀以创建相对路径。

'prefixes' => array(
    '/www/php/lib',
),
$client->setPrefixes(array(
    '/www/php/lib',
));

sample_rate

应用于事件的抽样因子。值0.00将拒绝发送任何事件,值为1.00将发送100%的事件。

// send 50% of events
'sample_rate' => 0.5,

send_callback

每当数据准备好发送时将调用的函数。在函数中,您可以改变数据,或者返回false以指示SDK不发送事件。

'send_callback' => function($data) {
    // strip HTTP data
    @unset($data['request']);
},
$client->setSendCallback(function($data) {
    // dont send events if POST
    if ($_SERVER['REQUEST_METHOD'] === 'POST')
    {
        return false;
    }
});

curl_method

默认为“同步”。

可用方法:

  • sync(默认值):当它们变为异步时立即发送请求:
  • async:使用curl_multi处理程序进行异步提交
  • exec:通过为每个项目分配curl进程异步发送事件

curl_path

默认为'curl'。

指定要与'exec'curl方法一起使用的curl二进制文件的路径。

transport

设置自定义传输以覆盖Sentry事件向上游发送的方式。

'transport' => function($client, $data) {
    $myHttpClient->send(array(
        'url'     => $client->getServerEndpoint(),
        'method'  => 'POST',
        'headers' => array(
            'Content-Encoding' => 'gzip',
            'Content-Type'     => 'application/octet-stream',
            'User-Agent'       => $client->getUserAgent(),
            'X-Sentry-Auth'    => $client->getAuthHeader(),
        ),
        'body'    => gzcompress(jsonEncode($data)),
    ))
},
$client->setTransport(...);

trace

将此设置为false可禁用stacktraces中的反射跟踪(函数调用参数)。

logger

调整消息的默认记录器名称。默认为php。

ca_cert

CA证书捆绑包的路径。

默认为包含getsentry.com的公共包:./ data / cacert.pem

注意事项:

  • 除非curl抛出表明需要证书的错误,否则将忽略CA捆绑包。
  • 该选项目前仅在同步卷曲传输中使用。

curl_ssl_version

要使用的SSL版本(2或3)。默认情况下,PHP会尝试自行确定,但在某些情况下,必须手动设置。

message_limit

默认为1024个字符。此值用于截断消息和帧变量。但是,不保证整个消息的长度将受此值的限制。

processors

在将数据发送到Sentry之前用于处理数据的类数组。默认情况下,使用Raven_Processor_SanitizeDataProcessor。

processorOptions

在将该处理器添加到Raven_Client使用的处理器列表之前,将传递给Raven_Processor子类中的setProcessorOptions()函数的选项

在Raven_Processor_SanitizeDataProcessor中覆盖正则表达式的示例如下:

'processorOptions' => array(
    'Raven_Processor_SanitizeDataProcessor' => array(
                'fields_re' => '/(user_password|user_token|user_secret)/i',
                'values_re' => '/^(?:\d[ -]*?){15,16}$/'
            )
)

timeout

以秒为单位向Sentry服务器发送请求的超时时间,默认为2秒。

'timeout' => 2,

excluded_exceptions

不应报告的异常,此列表中的异常扩展异常也将被排除,默认为空数组。

在下面的示例中,当您排除LogicException时,您还将排除BadFunctionCallException,因为它扩展了LogicException。

'excluded_exceptions' => array('LogicException'),

ignore_server_port

默认情况下,当服务器端口是非标准端口时,它将添加到已记录的URL(80,443)。将此设置为true将完全忽略服务器端口,并且将导致服务器端口永远不会附加到记录的URL。

'ignore_server_port' => true,

二、提供请求上下文

大多数时候你并没有直接向Raven打电话,但你仍然想提供一些额外的背景。此生命周期通常包含以下内容:

  • 通过中间件(例如登录用户)设置一些上下文
  • 在请求生命周期中发送包含任何事件的所有给定上下文
  • 清理上下文

提供请求上下文有三种主要方法:

// bind the logged in user
$client->user_context(array('email' => 'foo@example.com'));

// tag the request with something interesting
$client->tags_context(array('interesting' => 'yes'));

// provide a bit of additional context
$client->extra_context(array('happiness' => 'very'));

如果您在生命周期中执行其他请求,则还需要确保清理上下文(以重置其状态):

$client->context->clear();

 

Spring Boot 可以很方便地集成 Sentry,以下是集成步骤: 1. 在 `pom.xml` 文件中添加 Sentry 依赖: ```xml <dependency> <groupId>io.sentry</groupId> <artifactId>sentry-spring-boot-starter</artifactId> <version>3.1.0</version> </dependency> ``` 2. 在 `application.properties` 或 `application.yml` 文件中配置 Sentry: ```properties sentry.dsn=YOUR_DSN sentry.release=YOUR_RELEASE_VERSION sentry.environment=YOUR_ENVIRONMENT ``` 其中,`YOUR_DSN` 是你的 Sentry DSN(Data Source Name),`YOUR_RELEASE_VERSION` 是你的应用版本号,`YOUR_ENVIRONMENT` 是你的应用环境(如 `production`、`development` 等)。 3. 创建一个全局异常处理器类,用于捕获异常并发送到 Sentry: ```java import io.sentry.Sentry; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.servlet.ModelAndView; @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ModelAndView handleException(Exception e) { // 发送异常信息到 Sentry Sentry.captureException(e); // 返回错误页面或其他处理方式 ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("error"); modelAndView.addObject("errorMessage", "An error occurred"); return modelAndView; } } ``` 以上步骤完成后,当应用发生异常时,Sentry 将会自动捕获并发送相应的异常信息。你可以登录 Sentry 平台查看应用的异常报告和性能指标。 希望以上信息对你有帮助!如果你还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值